Regex on Chrome模式输入验证

rpppsulh  于 2023-06-25  发布在  其他
关注(0)|答案(2)|浏览(129)

我有一个符合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

我就是找不到哪个块有这个无效转义。

smtd7mpg

smtd7mpg1#

最新的Chrome(至少从114开始)现在实际上使用了/v标志。这要求转义字符类中的所有特殊字符。
例如,要匹配{},您应该写入[\{\}]而不是[{}]

yshpjwxd

yshpjwxd2#

由于Chrome pattern属性会自动添加u修饰符,因此会应用更严格的正则表达式语法规则。基本上,你不能逃避任意的符号。如果该符号不是特殊的正则表达式元字符,则不能对其进行转义,否则将得到此错误。
所以,在你的例子中,单撇号不能被转义。删除它前面的转义反斜杠,正则表达式将再次在每个浏览器中工作。

相关问题