繁体   English   中英

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

[英]How to write regex to verify a comma delimited list of values

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

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

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

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

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

试试这个:

^[-\w\s]+(?:,[-\w\s]*)*$

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

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

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

笔记:

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

试试这个:

[-\w\s]+(,[-\w\s]+)*

[-\\w\\s]表示单词字符,空格或连字符。

单词字符通常包含_ ,因此如果要防止这种情况,您可能希望将其替换为A-Za-z0-9

[-A-Za-z0-9\s]+(,[-A-Za-z0-9\s]+)*

使用字符类。

^([0-9A-Za-z -]+)(,[0-9A-Za-z -]+)*$

请注意\\w包含下划线,这就是我将其扩展到字母数字范围的原因。

感谢@Jay指出丢失的锚点。

您可以使用字符类

[\w\s-]+(,[\w\s-]*)*

我已将组内的字符类设置为可选,以允许空字段。

如果验证器没有强制正则表达式始终与整个输入字段匹配,则可能需要通过在开始时使用^并在结尾处使用$锚定

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM