我有以下正则表达式来验证电子邮件地址:
var content = /^([\w._+-]|(<?))+[a-zA-Z0-9]@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\_]+\.)+[a-zA-Z0-9-_.]{1,}))$/;
我需要在@符号之前允许 '
,所以per this SO answer我更新了我的正则表达式:
var content = /^([\w._+-/\']|(<?))+[a-zA-Z0-9]@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\_]+\.)+[a-zA-Z0-9-_.]{1,}))$/;
注意在第一个捕获块中添加了 /\'
.
但是,我现在能够在不允许的情况下使用 /
保存数据 . 如果我只是尝试将 '
添加到捕获块,则会抛出'invalid regex'错误 .
如何在不允许正斜杠的情况下逃避单引号字符?
编辑:对于评论中的讨论,这是一个截图:
第一个是Visual Studio错误
第二个是Chrome调试器中的行
第三个是当我跳过正则表达式创建时抛出的异常 .
1 回答
您不需要在正则表达式文字中转义单引号 .
您的案例中的问题是结束您的角色类的
-
. 如果它位于末尾,则它用作文字-
,同时在两个字符之间使用时打开一个范围 .您当前的尝试将打开
+
和/
之间的范围,包括,
和-
. 如果直接使用'
,则范围无效,因为'
的索引低于+
.要解决此问题,请转义减号
\-
或再次将其移至末尾 .