• ベストアンサー

JavaScriptの正規表現について

変数に格納された文字列から任意の文字ついて<strong>タグを付けて置き換える方法 が分からなくて困っています 具体的に言うと 文字列stに対して変数keyに格納された文字列にマッチした全て強調する方法... ex) st="4月の16日の昼の弁当のおかず" key="の" の結果が st="4月<strong>の</strong>16日<strong>の</strong>昼の弁当<strong>の</strong>おかず" となるスクリプトを作成したいのです。 どなたかよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#199778
noname#199778
回答No.1

正規表現オブジェクトと.replace()メソッドを利用すればよいと思います。 質問文の例を元に、実例を挙げます。 <script type="text/javascript"><!-- st="4月の16日の昼の弁当のおかず"; key="の"; regexp= new RegExp(key,"g"); st=st.replace(regexp,"<strong>"+key+"</"+"strong>"); //--> </script> 簡単に解説すると、3行目でregexpという名前の正規表現オブジェクトを作成しています。 ここでは、検索対象文字列を変数keyに格納されている値とし、gオプションでマッチするすべての部分を対象にするようにしています。 その次の行で、変数stの中にある変数keyと一致する部分を正規表現オブジェクトを利用して探し出し、その部分をstrong要素で囲った表記に置き換えています。 RegExp()では、第1引数が検索対象文字列、第2引数が検索時のオプションになります。 .replace()メソッドでは、第1引数が検索対象文字列(正規表現も利用可)、第2引数が検索対象文字列の置換後の文字列になります。 一応、IE6、Netscape 7、Opera 6.05で動作確認してあります。 参考になれば幸いです。

yambal-net
質問者

お礼

ありがとうございます お礼が遅れましたが、 早いお返事を頂き、とても助かりました。 今後もよろしくお願い致します

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.4

>正規表現は奥がふかいですなぁ... ANo.#2の補足をください。(・;)

すると、全ての回答が全文表示されます。
  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.3

となると <HTML> <HEAD> <TITLE>(/_ _ )/♪へ(-。-へ)♪(/_ _ )/ウ</TITLE> </HEAD> <BODY> <P><INPUT id=text1 name=text1 style="WIDTH: 257px; HEIGHT: 22px" size=33 value=4月の16日の昼の弁当のおかず></P> <P><INPUT id=text2 name=text2 value=の></P> <P>&nbsp;</P> <SCRIPT LANGUAGE=javascript> <!-- var key = text2.value; var r, ss; var st = text1.value; ss = st.split("の"); r=""; for(i=0;i<ss.length-1;i++){ if(ss[i]=="昼"){ r = r + ss[i] + key; }else{ r = r + ss[i] + "<strong>" + key + "</strong>"; } } r = r + ss[i] window.document.write(r); //--> </SCRIPT> </BODY> </HTML> こんな感じはどうでしょうか?

yambal-net
質問者

お礼

ありがとうございます 正規表現は奥がふかいですなぁ...

すると、全ての回答が全文表示されます。
  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.2

昼の弁当  ↑ これは強調させないんですね?

すると、全ての回答が全文表示されます。

関連するQ&A