Javascript は文字列を正規表現(注1)に基づいて置き換えるメソッドとして replace を持っている。そしてこのシンタックスとして
文字列.replace(パターン,文字列)がサポートされている。パターンとして、引用符で囲むタイプとスラッシュを使うものが許されている。マニュアル(注2)には共に正規表現として説明されているが実体は違うようだ。
Mozilla 系でしか確認していないが、引用符で囲った場合には、実際には文字列の単純な置換でしかない。この場合には実は(隠し?)オプションがあって、第三引数に "g" を指定すると、文字列に現れる全てのパターンが置換される。
正規表現を使う場合にはスラッシュを使わなくてはならない。正規表現にスラッシュを使う記法は UNIX のテキストエディタ ed が起源だと思う(注1)。そして sed や awk, さらには perl や javascript にまでこの記法が引き継がれている。正規表現は単なる文字列ではなく、正規表現オブジェクトの特別なクラスに属しているのである。
パターンを動的に構成するにはどうするか? 例えばテキストエリアからパターンを読み取る場合である。Javascript には RegExp がこのような目的のために準備されている。
u = document.getElementById("text").value; u = new RegExp(u); t = s.replace(u,"b");この例では簡単のためにマッチした文字列を "b" に置き換えるようになっているが、目的に合わせて書き換えればよい。
以下の Javascript はここに述べた事の確認用である。
function example(){ var s,t,u; t = ''; s="abab"; t += s.replace("a","b") +"\n"; t += s.replace("a","b","g") +"\n"; t += s.replace("^a","b") +"\n"; t += s.replace("[a]","b") +"\n"; t += "\n"; t += s.replace(/a/,"b") +"\n"; t += s.replace(/a/g,"b") +"\n"; t += s.replace(/^a/g,"b") +"\n"; t += s.replace(/^[a]/,"b") +"\n"; t += "\n"; u="^a"; t += s.replace(u,"b") +"\n"; u=/^a/; t += s.replace(u,"b") +"\n"; u=document.getElementById("text").value; u=new RegExp(u); t += s.replace(u,"b") +"\n"; alert(t); }この関数が呼び出されます。