【发布时间】:2016-11-04 03:26:42
【问题描述】:
以下正则表达式检查在代码中不起作用。但是如果我在 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");
}
请您帮我解释一下为什么会发生这种情况。顺便说一句,如果我进行如下所示的一些修改,它就可以工作。但我希望它与 (new RegExp(pattern)) 一起使用
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");
}
【问题讨论】:
-
但我希望它与 (new RegExp(pattern) 为什么?
-
@torazaburo 得到了答案。我需要在每个反斜杠前面的正则表达式中添加额外的反斜杠。因为“new regExp(pattern)”正在从模式中剥离反斜杠,这就是它不起作用的原因。
标签: javascript regex email-validation