如何编写正则表达式来验证以逗号分隔的值列表

C S*_*zek 5 regex validation sobipro

我正在使用SobiPro,一个joomla的目录系统,我有一个字段,其值只包含字母数字和连字符,所以这个文本字段中可能包含的示例如下:

玩具风筝,塑料轮,单向小玩意,金属线轴,3M线束

这个正则表达式将验证它们在字段保存之前在表单上输入的内容.

我想这个:(\ w +)(,\ s*\w +)*

但显然我不对,它没有考虑连字符..任何帮助!谢谢!

Jay*_*Jay 19

试试这个:

^[-\w\s]+(?:,[-\w\s]*)*$
Run Code Online (Sandbox Code Playgroud)

使用^$确保我们验证整个值,而不仅仅是在其中找到匹配项.

第一个字符类[-\w\s]+允许一个或多个字母数字,空格或短划线字符.破折号应该在类括号中排在第一位.

第二组允许零次或多次重复以分隔逗号.它包含在非捕获括号中,一个小的性能优化:(?: … )*

笔记:

  • 此表达式允许空条目,例如A,B,,D.如果您不想允许此操作,请将倒数第二个更改*为a +.
  • \w速记允许下划线.为防止这种情况,请更换它们A-Za-z0-9.