正则表达式模式在正则表达式测试器中工作但不在实际代码中

时间:2016-11-04 03:26:42

标签: javascript regex email-validation

以下正则表达式检查在代码中不起作用。但如果我在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");
}




2 个答案:

答案 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");
}




这是因为,如果您正在使用双引号,那么您需要转义正则表达式

但是,您可以简单地将正则表达式放在正斜面之间。