关于Chrome模式输入验证的正则表达式

时间:2017-01-11 13:16:58

标签: javascript regex html5 validation

我有一个符合RFC 5322的电子邮件正则表达式模式来验证我的输入。 这适用于所有浏览器,但Chrome在控制台上显示以下错误:

Pattern attribute value ^[-a-z0-9~!$%^&*_=+}
{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_]
[-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz
|com|coop|edu|gov|info|int|mil|museum|name
|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]
{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))
(:[0-9]{1,5})?$
is not a valid regular expression:

Uncaught SyntaxError: Invalid regular expression:
/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^
&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z
0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov
|info|int|mil|museum|name|net|org|pro|travel
|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.
[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/

Invalid escape

我无法找到这个无效逃脱的块。

1 个答案:

答案 0 :(得分:0)

由于Chrome pattern属性会自动添加u修饰符,因此会应用更严格的正则表达式语法规则。基本上,你无法逃脱任意符号。如果符号不是特殊的正则表达式元字符,则无法将其转义,否则您将收到此错误。

因此,在您的情况下,单个撇号不得被转义。删除之前的转义反斜杠,正则表达式将再次在每个浏览器中工作。