我正在尝试验证电子邮件地址并使用这样的正则表达式:
\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
。我究竟做错了什么?这个正则表达式是错误的,或者,由于使用构造函数或其他东西构造它,可能存在一些问题吗?
答案 0 :(得分:0)
使用RegExp
构造函数时,不包含字符串和字符串中的正斜杠。您还需要转义任何反斜杠,因为正常的字符串转义规则适用。
var a = new RegExp("\\b[a-z0-9._]+@[a-z0-9.-]+\\.[a-z]+\\b", 'i');
document.write('<pre>' + a.test("foo@bar.com") + '</pre>');
尽管如此,除非您使用的是动态生成的模式,否则将在运行时设置,如果它是常量,则应使用文字正则表达式。
var a = /\b[a-z0-9._]+@[a-z0-9.-]+\.[a-z]+\b/i;
document.write('<pre>' + a.test("foo@bar.com") + '</pre>');