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

如何编写仅允许字母及最多各1个英文句号、逗号、撇号的regex

错误原因

你原有的正则将量词规则写在了字符组[]内部,字符组仅用于匹配单个位置的单个字符,内部的{0,1}会被识别为{、0、,、1、}这些普通字符,完全无法限制英文句号、逗号、撇号的出现次数,除了会允许多个指定符号重复匹配外,还会错误放行包含{、}、数字的输入。

修正后的正则

如果你允许空字符串匹配,使用如下规则:

^(?![^.]*\.[^.]*\.)(?![^,]*,[^,]*,)(?![^']*'[^']*')[a-zA-Z.,']*$

如果你要求字符串至少有1个字符,将末尾的*替换为+即可:

^(?![^.]*\.[^.]*\.)(?![^,]*,[^,]*,)(?![^']*'[^']*')[a-zA-Z.,']+$
规则说明
  • 开头的^和结尾的$限定匹配整个输入字符串,避免仅部分内容符合要求就判定为合法
  • 三个(?!...)格式的负向前瞻分别做校验:确保字符串中不会出现2个及以上的英文句号、2个及以上的逗号、2个及以上的撇号
  • 末尾的[a-zA-Z.,']限定所有允许出现的字符仅为大小写英文字母、英文句号、逗号、撇号
测试效果
  • 合法输入:String、String.、a,b'c.d、Str.,'均匹配成功
  • 非法输入:str.,..,,,'''、a..b、a,,c、a''d均匹配失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:06:02