我正在使用 SobiPro,它是 joomla 的目录系统,并且我有一个字段,其值仅包含字母数字和连字符,因此该文本字段中可能包含的示例如下:
玩具风筝、塑料轮子、1-Way Gizmos、金属线轴、3M 扎带
此正则表达式将在字段保存之前验证他们在表单上输入的内容。
我以为: (\w+)(,\s*\w+)*
但显然我是不对的,它不考虑连字符..任何帮助!谢谢!
我正在使用 SobiPro,它是 joomla 的目录系统,并且我有一个字段,其值仅包含字母数字和连字符,因此该文本字段中可能包含的示例如下:
玩具风筝、塑料轮子、1-Way Gizmos、金属线轴、3M 扎带
此正则表达式将在字段保存之前验证他们在表单上输入的内容。
我以为: (\w+)(,\s*\w+)*
但显然我是不对的,它不考虑连字符..任何帮助!谢谢!
尝试这个:
^[-\w\s]+(?:,[-\w\s]*)*$
使用^
并$
确保我们验证整个值,而不仅仅是在其中的某个地方找到匹配项。
第一个字符类,[-\w\s]+
允许一个或多个字母数字、空格或破折号字符。破折号应该放在类括号中的第一位。
第二组允许使用逗号分隔的零次或多次重复。它被包裹在非捕获括号中,一个小的性能优化:(?: … )*
笔记:
A,B,,D
. 如果您不想允许这样做,请将倒数第二个更改*
为+
.\w
速记允许下划线。为防止这种情况,请将它们替换为A-Za-z0-9
.使用字符类。
^([0-9A-Za-z -]+)(,[0-9A-Za-z -]+)*$
请注意,\w
其中包括下划线,这就是我将其扩展到字母数字范围的原因。
感谢@Jay 指出丢失的锚点。
尝试这个:
[-\w\s]+(,[-\w\s]+)*
[-\w\s]
表示单词字符、空格或连字符。
单词字符通常包括,因此如果要防止这种情况_
,您可能需要将其替换为。A-Za-z0-9
[-A-Za-z0-9\s]+(,[-A-Za-z0-9\s]+)*