したがって、Javascriptで正規表現をインスタンス化すると自動的にコンパイルされ、その正規表現が変数に格納されている場合、再コンパイルせずに再利用されることを知っています。例:
var re = /[Ff]oo|[Bb]ar/;
"Foo".match(re); // ["Foo"]
"Baz".match(re); // null
ただし、重複した正規表現は再コンパイルされますか、または V8 (Chrome/Node.js) はそれらをインテリジェントに再利用しますか (PHP が preg_* 関数で行うように)?
function isFooBar(str) {
return str.match(/[Ff]oo|[Bb]ar/);
}
isFooBar("Foo"); // ["Foo"]
isFooBar("Baz"); // null
明確にするために、最初の例が正規表現の1つのコンパイルになることを私は知っています。しかし、2 番目の例はどうでしょうか。