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