Есть ли разница между использованием new RegExp("regex");
и /same_regex/
для проверки на целевую строку? Я задаю этот вопрос, потому что у меня есть другой результат проверки, используя эти два подхода. Вот фрагмент, который я использовал для проверки поля электронной почты:
var email="[email protected]@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");
}
Я получил два непоследовательных результата:
email matched regex1 email mismatched regex2
Мне интересно, есть ли какая-либо разница здесь или я пропустил что-то в этом конкретном примере?
Для исполняемого примера см. здесь