【问题标题】:RegEx for comma seperated list逗号分隔列表的正则表达式
【发布时间】:2018-08-13 10:19:36
【问题描述】:

我想验证以逗号分隔的值列表,最后一个值后面没有逗号:

应该是有效的:

altdns1.at、altdns2.de.fr、altdns3.de

应该是无效的:

altdns1.at、altdns2.de.fr、altdns3.de、

我的正则表达式:

^([^,]+,)*([^,]*)$

我的想法:

  • ([^,]+,) 字符串开头:除逗号外的任何字符 - 一次到无限次 - 后跟一个逗号
  • * 这一切从零到无限次
  • ([^,]*) 字符串结尾:除逗号外的任何字符 - 一次到无限次

Regex101 显示此字符串与我的模式匹配:

altdns1.de.de,altdns2.de.de,altdns3.de.de,

为什么?

【问题讨论】:

  • 你的最后一个量词是*,而不是+end of string: any character except comma - one to unlimited times 是假的,实际上是零到无限次

标签: regex validation


【解决方案1】:

使用这个:

^[^,]+(?:,[^,]+)*$

说明:

^           : begining of line
  [^,]+     : 1 or more not comma
  (?:       : start non capturing group
    ,       : a comma
    [^,]+   :  1 or more not comma
  )*        : end group, may appear 0 or more times
$           : end of line

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多