以下正则表达式检查在代码中不起作用。但如果我在regex101.com上使用这种模式,那就完美了
var pattern = "^([a-zA-Z0-9]([-\.\w]*[a-zA-Z0-9])*@([a-zA-Z0-9][-\w]*[a-zA-Z0-9]\.)+[a-zA-Z]{2,9})$";
var value = "test@user.com";
var regexp = new RegExp(pattern);
if (!regexp.test(value)) {
alert("Failed");
} else {
alert("passed");
}

你能帮我解释为什么会发生这种情况。顺便说一句,如果我做如下给出的一些修改,它的工作原理。但我想要它(新的RegExp(模式))
var pattern = /^([a-zA-Z0-9]([-\.\w]*[a-zA-Z0-9])*@([a-zA-Z0-9][-\w]*[a-zA-Z0-9]\.)+[a-zA-Z]{2,9})$/;
var value = "test@user.com";
if (!pattern.test(value)) {
alert("Failed");
} else {
alert("passed");
}

答案 0 :(得分:0)
您需要转义那些反斜杠(\
)。
var pattern = "^([a-zA-Z0-9]([-\\.\\w]*[a-zA-Z0-9])*@([a-zA-Z0-9][-\\w]*[a-zA-Z0-9]\\.)+[a-zA-Z]{2,9})$";
var value = "test@user.com";
var regexp = new RegExp(pattern);
if (!regexp.test(value)) {
console.log("Failed");
} else {
console.log("passed");
}
答案 1 :(得分:0)
只需删除双引号并将正则表达式简单地放在正斜杠中即可。
var pattern = /^([a-zA-Z0-9]([-\.\w]*[a-zA-Z0-9])*@([a-zA-Z0-9][-\w]*[a-zA-Z0-9]\.)+[a-zA-Z]{2,9})$/;
var value = "test@user.com";
var regexp = new RegExp(pattern);
if (!regexp.test(value)) {
alert("Failed");
} else {
alert("passed");
}

这是因为,如果您正在使用双引号,那么您需要转义正则表达式
但是,您可以简单地将正则表达式放在正斜面之间。