首页 文章

如何正确逃避单一报价?

提问于
浏览
-1

我有以下正则表达式来验证电子邮件地址:

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'错误 .

如何在不允许正斜杠的情况下逃避单引号字符?

编辑:对于评论中的讨论,这是一个截图:

enter image description here

第一个是Visual Studio错误

第二个是Chrome调试器中的行

第三个是当我跳过正则表达式创建时抛出的异常 .

1 回答

  • 4

    您不需要在正则表达式文字中转义单引号 .

    您的案例中的问题是结束您的角色类的 - . 如果它位于末尾,则它用作文字 - ,同时在两个字符之间使用时打开一个范围 .

    您当前的尝试将打开 +/ 之间的范围,包括 ,- . 如果直接使用 ' ,则范围无效,因为 ' 的索引低于 + .

    要解决此问题,请转义减号 \- 或再次将其移至末尾 .

相关问题