Java正则邮箱验证:如何修改规则允许@前合规使用撇号
调整后的邮箱验证正则表达式
EMAIL_VALID_REGEX = "^[A-Za-z0-9_\\+\\-](?:[']?[A-Za-z0-9_\\+\\-])*(?:\\.[A-Za-z0-9_\\+\\-](?:[']?[A-Za-z0-9_\\+\\-])*)*@[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})$";
规则逻辑说明
本次仅调整@符号前的用户名部分规则,@后的域名校验逻辑完全保留原有设置,用户名部分的适配逻辑如下:
- 首字符强制限定为非撇号的合法字符(支持大小写字母、数字、
_、+、-),满足撇号不能作为用户名开头的要求 - 首字符后的匹配规则为
(?:[']?[A-Za-z0-9_\\+\\-])*:每次匹配最多允许出现1个撇号,且撇号后必须紧跟一个非撇号的合法字符,从结构上杜绝连续两个撇号的可能 - 原有用户名支持的点分隔规则保留,每个被
.分隔的子段都遵循上述撇号限制规则,且每个子段的结尾必然是非撇号字符,满足撇号不能作为用户名结尾的要求 - 支持仅1个字符的用户名(仅匹配首字符即可,后续无内容也判定合法),符合要求中单个字符用户名的规则
校验效果验证
- 合法邮箱全部匹配:
test@gmail.com、test's@gmail.com、t@gmail均可正常通过校验 - 非法邮箱全部拦截:
'test@gmail.com(撇号开头)、test'@gmail.com(撇号结尾)、'test'@gmail.com(首尾均为撇号)、test''s@gmail.com(连续撇号)都会被校验规则拦截
内容的提问来源于stack exchange,提问作者Karthick
相关产品推荐
相关产品推荐

