我不会写很多正则表达式,所以我需要一个帮助。

我需要一个可以验证字符串是否为字母数字逗号分隔字符串的正则表达式。

例子:


123, 4A67, GGG, 767是有效的。
12333, 78787&*, GH778将无效
fghkjhfdg8797<将无效


这是我到目前为止的内容,但不太正确:^(?=.*[a-zA-Z0-9][,]).*$

有什么建议?

最佳答案

听起来您需要这样的表达式:

[0-9a-zA-Z]+(,[0-9a-zA-Z]+)*


Posix允许使用更具描述性的版本:

[[:alnum:]]+(,[[:alnum:]]+)*
[[:alnum:]]+([[:space:]]*,[[:space:]]*[[:alnum:]]+)*  // allow whitespace


如果您也愿意接受下划线,请搜索整个单词(\w+):

\w+(,\w+)*
\w+(\s*,\s*\w+)*  // allow whitespaces around the comma


(感谢艾伦指出我的一些缺点!)

10-07 22:57