需要正则表达式来使用逗号分隔符验证数字。 1,5,10,55 有效但 1 ,,,, 10 无效。
答案 0 :(得分:14)
这应该这样做:
^\d+(,\d+)*$
正则表达式相当简单:\d+
是第一个数字,后跟可选的逗号和更多数字。
您可能希望在合适的地方投放\s*
,或在验证前删除所有空格。
\d+
替换为[+-]?\d+
\d+
替换为[+-]?\d+(?:\.\d+)?
答案 1 :(得分:9)
以下是我们将要使用的正则表达式的组件:
\d
是数字字符类+
是一个或多个重复说明符*
是零或多重复说明符(...)
执行分组^
和$
分别是行锚点的开头和结尾我们现在可以编写我们需要的正则表达式:
^\d+(,\d+)*$
那是:
from beginning...
| ...to the end
| |
^\d+(,\d+)*$ i.e. ^num(,num)*$
\_/ \_/
num num
请注意,*
表示只允许一个号码。如果您坚持至少两个号码,请改用+
。您也可以将\d+
替换为另一种模式,以允许例如标志和/或小数部分。
您可以选择使用括号非捕获来提高性能:
^\d+(?:,\d+)*$
如果味道支持它,你可以在这种情况下重复所有重复占有:
^\d++(?:,\d++)*+$
答案 2 :(得分:0)
^[0-9]*(,){1}[0-9]*/
试试这个