使用逗号分隔符对数字进行正则表达式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]*/ 

试试这个