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

如何仅用正则表达式验证逗号分隔的1-3字符单词输入?

纯正则表达式解决方案

可以使用以下正则表达式直接满足需求,无需额外运行时校验:

/^[A-Z0-9]{1,3}(?:, ?[A-Z0-9]{1,3})*(?:, ?)?$/

正则说明:

  • ^:匹配字符串开头
  • [A-Z0-9]{1,3}:匹配第一个1-3位的有效字符(大写字母或数字)
  • (?:, ?[A-Z0-9]{1,3})*:匹配任意数量(包括0个)的「分隔符+有效字符」组合,其中, ?匹配逗号后可选的空格(支持, 或, 两种分隔方式)
  • (?:, ?)?:允许字符串末尾可选地带上逗号或逗号加空格(对应BRU,、BRU, 这类有效输入)
  • $:匹配字符串结尾

验证效果:

  • 有效输入(全部匹配):B、BR、BRU、BRU,、BRU, 、BRU, A、BRU, ALC、BRU, ALC,B
  • 无效输入(全部不匹配):BRUU、BRU ALC、BRUALC

原正则问题分析:

你之前使用的/^(?:[A-Z0-9]{1,3}(?:, |,)?)*$/存在漏洞,因为(?:[A-Z0-9]{1,3}(?:, |,)?)*会允许连续的有效字符块(比如BRU和ALC直接拼接成BRUALC),正则会把它们拆成多个[A-Z0-9]{1,3}片段匹配,而没有强制要求片段之间必须有分隔符。新正则通过强制后续有效字符必须跟在分隔符之后,彻底避免了这种情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:19:56