人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascriptの正規表現

先日「http://q.hatena.ne.jp/1149023329」でも質問させていただいたのですが
期待通りの結果を得られなかったので再度質問させてください。

「ここから<A href="x" title="ここを通り">ここを通り</A>ここまで」

「<STRONG>ここ</STRONG>から<A href="x" title="ここを通り">ここを通り</A><STRONG>ここ</STRONG>まで」
とするjavascriptで使える正規表現を教えてください。

hoge.replace(/???????/,'???????');

「ここ」を<STRONG>で囲むのですが、<〜> 内や<A〜</A>の間は置き換えない正規表現を望んでいます。

できれば1行で動く書き方を教えてください。

よろしくお願いします。

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:hoge JavaScript 正規表現
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● はむ!
●5ポイント

以下のような感じでどうでしょう?

とりあえずお望みの結果は得られていると思います。

1行ではないかもしれませんが・・・。

var text = 'ここからここを通りここまで';

var res = text.replace(/([^<]+)(<[Aa][^>]+\>[^<]*<\/[Aa]\s*>)?(<[^>]+>)?/g,

function (str, p1, p2, p3, offset, s) {

return p1.replace("ここ","ここ")+(p2?p2:"")+(p3?p3:"");

});

◎質問者からの返答

ありがとうございます。

確認なのですがこれは本当にjavascriptで動きますか!?

動きましたか!?

教えていただいたコードの後に「alert(res);」と書いても期待通りの結果が得られないのですが...


2 ● f99aq
●0ポイント
msg = 'ここからここ<A href="ここxここ" title="ここを通りここ">ここを通りここ</A>ここまでここ';
alert(msg.replace(/(ここ)(?![^<]*<\/a>|[^"'<]*["'].+?>)/gi, "<STRONG>$1</STRONG>"));

Firefox 1.5.0.4 で確認しました。もっとスマートに書けないかなぁ。


3 ● f99aq
●200ポイント ベストアンサー
alert(msg.replace(/(ここ)(?![^<]*<\/a>|[^<]*?>)/gi, "<STRONG>$1</STRONG>"));

よく考えたら、これでいけますね。こんなもんでしょうか。

◎質問者からの返答

これはいいですね!!

前後を考えなくても後だけ考えれば良いとは...

ありがとうございました。

万一不具合が見つかったら再度質問させていただきます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ