正则表达式允许逗号分隔的代码列表

Regex to allow a comma seperated list of codes

我有一个需要验证的输入表单,列表必须遵循这些规则

有效的示例数据

示例数据无效

我正在使用 http://www.regexr.com,目前为止:[A-Z_]_[A-Z],|[0-9],

问题是每个有效数据示例中的最后一个代码未被选中,因此该行未通过正则表达式模式

试试这个 -

^(?:[A-Z]_[A-Z]*|[0-9]+)(?:,(?:[A-Z]_[A-Z]*|[0-9]+))*$

Demo

试试这个:

^(?:(?:[A-Za-z]_[A-Za-z]*|\d+)(?:,|$))+(?<!,)$

regex101 demo.


解释:

^  start of string
(?:  this group matches a single element in the list:
    (?:
        [A-Za-z]  a character
        _         underscore
        [A-Za-z]* any number of characters (including 0)
    | or
        \d+  digits
    )
    (?: followed by either a comma
        ,
    |  or the end of the string
        $
    )
)+  match any number of list elements
(?<!  make sure there's no trailing comma
    ,
)
$  end of string