使用逗号分隔符对数字进行正则表达式validation
需要一个正则表达式来使用逗号分隔符validation数字。 1,5,10,55有效,但1 ,,,, 10无效。
这应该这样做:
^\d+(,\d+)*$
正则表达式相当简单: \d+
是第一个数字,后跟可选的逗号和更多数字。
你可能想要在你认为合适的地方放入\s*
,或者在validation之前删除所有空格。
- 要允许负数,请用
[+-]?\d+
替换[+-]?\d+
- 要允许分数:将
\d+
替换为[+-]?\d+(?:\.\d+)?
以下是我们将要使用的正则表达式的组件:
-
\d
是数字字符类的简写 -
+
是一个或多个重复说明符 -
*
是零或更多重复说明符 -
(...)
执行分组 -
^
和$
分别是行锚的开头和结尾
我们现在可以构成我们需要的正则表达式:
^\d+(,\d+)*$
那是:
from beginning... | ...to the end | | ^\d+(,\d+)*$ ie ^num(,num)*$ \_/ \_/ num num
请注意, *
表示只允许一个数字。 如果你坚持至少两个数字,那么用+
代替。 您还可以将\d+
替换为另一种模式,以允许例如符号和/或小数部分。
参考
- regular-expressions.info/Repetition,Character Classes , Grouping , Anchors
高级主题:优化
(可选)您可以使括号不捕获性能:
^\d+(?:,\d+)*$
如果味道支持它,你可以在这种情况下使所有重复占有欲 :
^\d++(?:,\d++)*+$
参考
- regular-expressions.info/Possessive
^[0-9]*(,){1}[0-9]*/
试试这个