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行で動く書き方を教えてください。

よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2006/06/16 10:24:51
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:f99aq No.3

回答回数4ベストアンサー獲得回数1

ポイント200pt
alert(msg.replace(/(ここ)(?![^<]*<\/a>|[^<]*?>)/gi, "<STRONG>$1</STRONG>"));

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

id:worldtravel

これはいいですね!!

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

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

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

2006/06/16 10:21:20

その他の回答2件)

id:hammm No.1

回答回数11ベストアンサー獲得回数0

ポイント5pt

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

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

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:"");

});

id:worldtravel

ありがとうございます。

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

動きましたか!?

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

2006/06/16 05:42:08
id:f99aq No.2

回答回数4ベストアンサー獲得回数1

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

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

id:f99aq No.3

回答回数4ベストアンサー獲得回数1ここでベストアンサー

ポイント200pt
alert(msg.replace(/(ここ)(?![^<]*<\/a>|[^<]*?>)/gi, "<STRONG>$1</STRONG>"));

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

id:worldtravel

これはいいですね!!

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

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

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

2006/06/16 10:21:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません