パフォーマンスを確認するには、この fiddleを参照してください。
?
オプションとしてwith grouping またはwith empty stringを使用すると|
、予期しない結果になる可能性があります!
カップル テスト:
var myString = "this is a test string";
var myRegexp = /(test)?/;
var match = myRegexp.exec(myString);
alert(match[0]); // returns empty string
var myString = "this is a string";
var myRegexp = /(test)?/;
var match = myRegexp.exec(myString);
alert(match[0]); // returns empty string
var myString = "this is a test string";
var myRegexp = /(test|)/;
var match = myRegexp.exec(myString);
alert(match[0]); // returns empty string
var myString = "this is a string";
var myRegexp = /(test|)/;
var match = myRegexp.exec(myString);
alert(match[0]); // returns empty string
var myString = "this is a test string";
var myRegexp = /(test)/;
var match = myRegexp.exec(myString);
alert(match[0]); // returns "test"
これはエラーで終了します:
var myString = "this is a string";
var myRegexp = /(test)/;
var match = myRegexp.exec(myString);
alert(match[0]); // error
そして、これはあなたのための解決策かもしれません:
var myString = "this is a test string";
var myRegexp = /^(?:.*(test)|(?!.*test))/;
var match = myRegexp.exec(myString);
alert(match[1]); // returns "test"
var myString = "this is a string";
var myRegexp = /^(?:.*(test)|(?!.*test))/;
var match = myRegexp.exec(myString);
alert(match[1]); // returns undefined
この fiddleで上記のコードをテストします。