JS RegExp问题

时间:2015-07-09 18:02:20

标签: 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。我究竟做错了什么?这个正则表达式是错误的,或者,由于使用构造函数或其他东西构造它,可能存在一些问题吗?

1 个答案:

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