Javascript JS正则表达式问题
我正在尝试验证电子邮件地址并使用类似的正则表达式:Javascript JS正则表达式问题,javascript,regex,validation,Javascript,Regex,Validation,我正在尝试验证电子邮件地址并使用类似的正则表达式: \b[a-z0-9._]+@[a-z0-9.-]+\.[a-z]+\b/i 在regexr.com上的测试表明它按预期工作,但当我尝试这样做时: var a = new RegExp("\b[a-z0-9._]+@[a-z0-9.-]+\.[a-z]+\b/i"); console.log(a.test("foo@bar.com")); 我得到false。我做错了什么?这个regexp是错误的吗?或者,可能是因为使用构造函数或其他东西构造它
\b[a-z0-9._]+@[a-z0-9.-]+\.[a-z]+\b/i
在regexr.com上的测试表明它按预期工作,但当我尝试这样做时:
var a = new RegExp("\b[a-z0-9._]+@[a-z0-9.-]+\.[a-z]+\b/i");
console.log(a.test("foo@bar.com"));
我得到false
。我做错了什么?这个regexp是错误的吗?或者,可能是因为使用构造函数或其他东西构造它而出现了一些问题?当使用构造函数时,您不在字符串中包含标志或正斜杠。您还需要转义任何反斜杠,因为正常的字符串转义规则适用
var a=newregexp(\\b[a-z0-9.\]+@[a-z0-9.-]+\\[a-z]+\\b“,i”);
文件。写(“”+a.test(“”)foo@bar.com") + '');我忘记强调了,是的,我们的想法是从字符串动态创建regexp。我怎样才能让它这样工作呢?如果您正在创建一个需要在运行时而不是评估时更新的动态模式,那么您可以使用RegExp
构造函数。但如上所述,字符串中既不包含正斜杠,也不包含标志。这不起作用,因为您需要双反斜杠。@torazaburo似乎可以做到这一点。你能解释一下,为什么我在使用构造函数时需要转义反斜杠,但如果我使用的是regexp文本,我就不需要这样做?@TristanTzara这是因为在regexp
构造函数中,正常的字符串转义规则适用。这包括特殊字符类。