javascriptで正規表現をテストすると、一貫して奇妙な結果が得られているようです。 http://jsfiddle.net/s5fYf/15/Javascript Regexは.test()を渡す必要がありますが、失敗すると思われます - なぜですか?
これは私が構築してるWebプロジェクトから取られる:
は、ここに私のバイオリンです。私はバリデーションオブジェクトの配列を自分の検証関数に渡します。バリデーション関数は、各ルールを値に対して検証します。 falseの場合は、ループを停止し、失敗したルールからメッセージとcssClassを受け取る戻りオブジェクトを返す必要があります。
問題は、正規表現テストに合格しても検証メソッドがfalseを返すように見えますが、これは不可能です。だから、私は何かキーが欠けているように感じる。デバッグ出力から、出力される正規表現テストはパスしますが、コード内でテストされると明らかに失敗します。これは、私が私のプロジェクトで見るものとインラインです。デバッグ出力を省略すると、戻り値は基本的に真と偽の間で切り替わります。
本来、/regex/.test(value)
の機能は、真実と偽の間で振動しているように見えますが、これは一貫していますが、私が期待していたものではありません...したがって、私の質問はこの奇妙な行動を引き起こしています!
私は私の正規表現をソリューションの外でテストしました。
UPDATE:私の正規表現から 'G' またはグローバルフラグを省略
は、この問題を解決しました。
Why RegExp with global flag in Javascript give wrong results?
私は 'test()'と戻り値の間に一貫性があります。しかし、ぼかしを複数回トリガーすると、同じオシレーションが発生します。これをどうやって回避しますか? – Jon
問題はグローバルフラグにありますので、上記の私の更新をご覧ください。 – Jon
ありがとう!正規表現から 'g'グローバルフラグを落としたときに、保存された' test() 'の結果の問題はなくなりました。グローバルフラグは追加の正規表現の約20%です。test()呼び出しが有効なときに失敗しました。 –