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

如何修改regex以拦截连续相同特殊字符,满足姓名合规校验要求?

正则修改方案

问题原因

你现有正则未限制允许类特殊字符的连续重复规则,因此无法拦截连续两个’、连续两个-这类非法格式。

修改后正则

版本1(支持多语言姓名,推荐现代正则引擎使用)

^(?!.*([^\p{L}\s])\1)[\p{L}'’\-,.][^0-9_!¡?÷?¿\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$

版本2(兼容老旧引擎/中文姓名,适配不支持Unicode属性类的环境)

^(?!.*([^a-zA-Z\u4e00-\u9fa5\s])\1)[a-zA-Z\u4e00-\u9fa5'’\-,.][^0-9_!¡?÷?¿\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$

核心修改说明

  1. 新增负向前瞻断言(?!.*([^\p{L}\s])\1),作用是全局拦截连续重复的非字母、非空白字符:
    • [^\p{L}\s]匹配所有不属于字母、不属于空格的字符(包含你允许的’、-、,、.等特殊字符)
    • \1指代前一个括号匹配到的字符,([^\p{L}\s])\1就代表两个连续相同的特殊字符
    • 只要字符串中存在上述连续重复特殊字符,正则直接匹配失败
  2. 补充了右单引号’到允许的首字符集里,适配你示例中出现的排版类撇号格式,如果你只需要支持直引号'可删掉这部分
  3. 原有正则的字符过滤、长度限制逻辑完全保留,不影响已经验证通过的合法姓名校验

校验效果确认

  • 所有你列出的合法姓名格式均可正常通过校验
  • 此前失效的Timmy O’’Shaughnessy、John O’Shaughnessy--Smith两类格式会被直接拦截
  • 带数字、注入代码类的非法格式仍按原有规则正常拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:45:04