我没有写很多正则表达式,所以我需要一些帮助.
我需要一个正则表达式,可以验证字符串是一个字母数字逗号分隔的字符串.
例子:
123, 4A67, GGG, 767 是有效的. 12333, 78787&*, GH778 会无效的 fghkjhfdg8797< 会无效的 这是我到目前为止所做的,但不是很正确: ^(?=.*[a-zA-Z0-9][,]).*$
有什么建议?
Ker*_* SB 19
听起来你需要一个像这样的表达式:
[0-9a-zA-Z]+(,[0-9a-zA-Z]+)*
Run Code Online (Sandbox Code Playgroud)
Posix允许更自我描述的版本:
[[:alnum:]]+(,[[:alnum:]]+)*
[[:alnum:]]+([[:space:]]*,[[:space:]]*[[:alnum:]]+)* // allow whitespace
Run Code Online (Sandbox Code Playgroud)
如果您也愿意接受下划线,请搜索整个单词(\w+):
\w+(,\w+)*
\w+(\s*,\s*\w+)* // allow whitespaces around the comma
Run Code Online (Sandbox Code Playgroud)
(感谢Alan指出我的几个失败!)
试试这个模式: ^([a-zA-Z0-9]+,?\s*)+$
我用你的案例测试了它,以及一个数字“123”。我不知道你是否总是有逗号。
的[a-zA-Z0-9]+手段匹配这些符号的1个或多个所述的,?装置匹配0或1逗号(基本上,逗号是可选的)的\s*把手逗号后1个或多个空格,最后是外+说图案的匹配1个或多个。
这也将匹配
123 123 abc(没有逗号)这可能是一个问题 这也将匹配123,(以逗号结尾)这可能是一个问题。