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);
}
この関数が呼び出されます。