Есть ли разница между использованием 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
Мне интересно, есть ли здесь какая-то разница или я что-то упустил в этом конкретном примере?
Пример исполняемого файла см. здесь