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

咨询验证最多3个合规额外键的正则表达式是否正确

问题分析

你的正则存在两个核心问题:

  1. 负向前瞻(?!0+,?$)仅检查了连续0的情况,未覆盖0与空格混合的场景(比如"0 0"),替换空格后会变成全0字符串,违反规则2。
  2. 两个负向前瞻未结合校验“全0+空格”的无效情况,导致这类输入能通过校验。

正确正则表达式

针对你的处理流程(先替换所有空格为空,再按逗号分割),正确的正则需要确保原始输入中每个逗号分隔的键段,替换空格后既不全是0,也符合长度和字符要求。推荐正则如下:

/^$|^(?:(?![0 ]*$)[A-Z0-9 ]{1,20}(?:,(?![0 ]*$)[A-Z0-9 ]{1,20}){0,2})$/i

正则各部分说明

  • ^$:匹配空字符串,支持0个额外键的场景
  • (?![0 ]*$):核心负向前瞻,确保当前键段不是全由0和空格组成,替换空格后自然不会出现全0的无效键
  • [A-Z0-9 ]{1,20}:限制键段由字母、数字、空格组成,长度1-20(替换空格后长度≤20,且至少保留1个有效字符)
  • (?:,(?![0 ]*$)[A-Z0-9 ]{1,20}){0,2}:允许追加0-2个符合规则的键段,确保总键数不超过3个
  • 末尾的i标志:启用大小写不敏感匹配(若仅需大写可去掉)

校验示例

  • 合法输入(通过校验):
    • "ABC123"(单个键,替换后为ABC123)
    • "0A, 123 , XYZ"(三个键,替换后为0A,123,XYZ)
    • " aBc "(单个键,替换后为aBc)
  • 无效输入(被拦截):
    • "0 0"(替换后为00,全0)
    • " , 000 "(第一个键全空格,第二个键全0+空格)
    • "ABCDEFGHIJKLMNOPQRSTUV"(单个键长度超过20)
    • "A,B,C,D"(超过3个键)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:58:14