私はJavascriptの正規表現のをいじり、これを発見した今日:Javascriptの正規表現疑問符クロスブラウザの動作
//Suppose
var one = 'HELLOxBYE';
var two = 'HELLOBYE';
あなたはこれらの方法の両方に「X」を捕獲しようとする正規表現を作成することができます。
/^HELLO(x?)BYE$/ //(A)
//or
/^HELLO(x)?BYE$/ //(B)
私はvar(A)をvar 2で使用すると、regexpは空の文字列 ''を返します。一方、(B)を使うと、正規表現はnullを返します。
あなたはそれに注意する必要があります。
これがブラウザ間の動作であるかどうかは誰にもわかりますか?
私はGoogle Chromeの(Webkitの)15
UPDATEを構築する上でこれをテストしてみた:おっ、ただのInternet Explorer 8でいくつかのテストをした、そしてそれは両方のケースのために空の文字列「」を返します。だから私の結論は、(A)を使って空の文字列をテストするのが最善の選択肢だということです。 ?
が内部キャプチャグループであるため、捕捉ブラケットは、「X」と空の文字列の両方を取り込むことができるので
あなたは別の正規表現を使用していて、別の結果を返していますが、どのようにクロスブラウザーの動作ですか?異なる結果を持つ同じ正規表現がある場合は、それです。 – xdazz
試合のテストに使用しているコードを表示できますか? (さらに良いのは、http://jsfiddle.netで設定します)@xdazz - ブラウザによって、結果が異なります。私は当初、これが期待される結果であるという答えを投稿しましたが、IEで試したときにnullの代わりに空の文字列が得られました。 – nnnnnn
@nnnnnnはい、それは私が言ったように、同じ正規表現別の結果は、それはクロスブラウザの動作です。 – xdazz