2013年01月14日

2013 01.14 Mon


JavaScriptのreplaceで正規表現による後方参照
完全一致ではなく前後の部分一致でワイルドカード「*(アスタリスク)」を使用した文字列置換する書き方

hoge*huga

txt.replace( /hoge(.*)huga/, "huga$1hoge");



「.」が任意の一文字(ワイルドカード1文字)の意味を持ちます。
「+」が直前の文字の1字以上の繰り返しに、 * が直前の文字の0字以上の繰り返しにマッチします。
「()()()」は$1、$2...で呼び出し。
メタキャラクタとして"*","+"を含む表現は可能な限り長いパターンにマッチ(最長一致)します。可能な限り短いパターンにマッチ(最短一致)させるには"*","+"の直後に"?"を付けます。

<例>
<div id="ほげ"><a href="xxx.htm">ppp</a></div>
<script>
s1='<a(.*?)\/a>'
s2='<b><a$1\/a><\/b>'
e=document.getElementById('ほげ');
e.innerHTML=e.innerHTML.replace(RegExp(s1,"g"),s2);
</script>

置換結果
<div id="ほげ"><b><a href="xxx.htm">ppp</a><b></div>
i 大文字・小文字を区別しない
g 2番目、3番目... にマッチする部分も検索する
gi 大文字・小文字を区別せず、2番目、3番目... にマッチする部分も検索する



もっとスマートな書き方があると思いますが、とりあえずこれでどうにか実現しました。

お疲れさまでした。
参考になりましたらソーシャルメディアで共有してくださいませ。
posted by こさめ
edit  re
カテゴリ
インターネット>ブラウザ・WEBメール(24)
インターネット>Firefoxアドオン、設定(15)
インターネット>Proxomitronフィルター(32)
インターネット>ブログ、WEBサービス(53)
インターネット>アフィリエイト・ポイントサイト(27)
インターネット>楽天、ポイントあれこれ(5)
インターネット>Windows最適設定(32)
インターネット>インターネット設定(17)
インターネット>デスクトップ改造・拡張(7)
インターネット>セキュリティソフト(6)
ブログカスタマイズ>カテゴリー、記事一覧系(38)
ブログカスタマイズ>jQuery(Script)文字系(23)
ブログカスタマイズ>CSS(Script)デザイン(28)
ブログカスタマイズ>ブログパーツ(7)
ブログカスタマイズ>携帯モバイル系(3)
ブログカスタマイズ>SEO・アクセスアップ(31)
マルチメディア>Brackets(5)
マルチメディア>画像系ソフト(6)
マルチメディア>DVD・動画プレイヤー(15)
マルチメディア>動画編集ソフト(6)
マルチメディア>音楽再生プレイヤー(16)
マルチメディア>ネットラジオ配信・編集(3)
マルチメディア>P2Pテレビソフト(4)
マルチメディア>おもしろ動画・感動動画(25)
デザイン>フリー素材 画像(5)
デザイン>HP・ブログ フリー素材(6)
デザイン>イラスト(非素材)(8)
デザイン>作詞作曲編曲MP3(5)
雑記>PC部品・音楽機材(7)
雑記>映画・アニメ・漫画・芸能(14)
雑記>どうでもいい雑学知識(6)
雑記>ゲーム(6)
雑記>スマホ・携帯電話(6)
雑記>カーナビ・ETC(3)
雑記>ネット銀行とか(2)
雑記>18禁?ちょいエロネタ(3)

 (C) 2006 - kosame All rights.