正则表达式不适用于以逗号分隔的字符串列表

时间:2017-05-04 07:11:25

标签: javascript regex

我需要一个关于以下值的正则表达式:

Ha2:123hD,Ha2:123hD,Ha2:123hD - correct match - true
Ha2:123hD,Ha2:123hD,Ha2:123hD,  - comma on end - false
Ha2:123hD,Ha2:123hD,Ha2:123hD,,Ha2:123hD - double comma- false
,Ha2:123hD,Ha2:123hD,Ha2:123hD - comma at start- false

我正在尝试以下正则表达式:

/(([a-zA-Z0-9]+)(\W)([a-zA-Z0-9]+))/
/(([a-zA-Z0-9]+)(\W)([a-zA-Z0-9]+,)*([a-zA-Z0-9]+)(\W)([a-zA-Z0-9])+$)/

但它没有用。

3 个答案:

答案 0 :(得分:0)

如果您只需要检查这些修正字符串(我必须从您的问题中猜出),这将有效^(Ha2:123hD,)*Ha2:123hD$

否则,您只需遵循此表达式并将Ha2:123hD替换为您的通配符表达式。

同时查看本网站: method object 它很好地解释了正则表达式的单个符号是如何工作的。

答案 1 :(得分:0)

要仅匹配逗号分隔的字母数字+ :字符串列表,您可以使用

/^[a-zA-Z0-9:]+(?:,[a-zA-Z0-9:]+)*$/

请参阅regex demo

<强>解释

  • ^ - 字符串锚的开始
  • [a-zA-Z0-9]+ - 匹配1个或更多的字符类(由于+量词) ASCII字母或数字或:
  • (?: - 开始一个非捕获组....
    • , - 逗号
    • [a-zA-Z0-9:]+ - 匹配1个或多个(由于+量词)ASCII字母或数字或:
    • 的字符类
  • )* - ....出现0次或更多次(由于*量词)
  • $ - 字符串结束。

答案 2 :(得分:0)

您可以将逗号放在重复组的开头。

/^[a-zA-Z0-9]+[:][a-zA-Z0-9]+(?:,[a-zA-Z0-9]+[:][a-zA-Z0-9]+)*$/