You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确转义单引号?邮箱正则验证允许单引号异常排查

解决邮箱正则允许单引号且不允许斜杠的问题

首先,咱们来梳理下你遇到的核心问题:想让邮箱@前允许单引号,但之前的修改要么引入了不该有的斜杠,要么直接触发正则语法错误。下面给你具体的解决方案和原因分析:

正确的正则写法(正则字面量形式)

直接在@前的字符集中添加单引号',注意把它放在字符集的末尾(避免被解析成字符范围),同时移除多余的斜杠/:

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,}))$/;

为什么之前的写法出错?

  1. 添加/\'导致允许斜杠:在正则字符集里,/是普通字符,你把它加入捕获组后,自然会被当成允许的字符之一,这就是为什么系统会接受带斜杠的邮箱。
  2. 直接加'报错:大概率是你把'放在了字符集里的「范围位置」(比如[\w._+-']如果写成[\w._+'-],'-会被解析成从'到-的字符范围,虽然这个范围本身合法,但某些编辑器或JS环境可能会误判;如果是用字符串包裹正则的话,还可能出现引号冲突导致报错)。

如果是用字符串创建正则(new RegExp)

如果你的正则是通过字符串形式传入RegExp构造函数,要注意字符串的转义规则:

  • 用双引号包裹字符串时,'不需要转义:
var content = new RegExp("^([\\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,}))$");
  • 用单引号包裹字符串时,'需要转义成\':
var content = new RegExp('^([\\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,}))$');

这样修改后,正则就会允许@前出现单引号,同时拒绝斜杠,也不会触发语法错误啦。

内容的提问来源于stack exchange,提问作者sab669

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:11:54