ターゲット文字列に対してテストすることnew RegExp("regex");
と使用することの間に違いはありますか?/same_regex/
これらの2つのアプローチを使用しているときに異なる検証結果が得られたため、この質問をしています。メールフィールドの検証に使用したスニペットは次のとおりです。
var email="didxga@gmail.comblah@foo.com";
var regex1 = new RegExp("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
var regex2 = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
//using RegExp object
if(regex1.test(email)) {
console.log("email matched regex1");
} else {
console.log("email mismatched regex1");
}
//using slash notation
if(regex2.test(email)) {
console.log("email matched regex2");
} else {
console.log("email mismatched regex2");
}
2つの一貫性のない結果が得られました:
メール一致regex1 メールの不一致regex2
ここに違いがあるのか、この特定の例で何かを省略したのか疑問に思いますか?
実行可能な例については、こちらを参照してください