使用逗号分隔符对数字进行正则表达式验证

Suv*_*kar 7 regex validation jquery

需要一个正则表达式来使用逗号分隔符验证数字. 1,5,10,55有效,但1 ,,,, 10无效.

Kob*_*obi 15

这应该这样做:

^\d+(,\d+)*$
Run Code Online (Sandbox Code Playgroud)

正则表达式相当简单:\d+是第一个数字,后跟可选的逗号和更多数字.

你可能想要\s*在你认为合适的地方投掷,或者在验证之前删除所有空格.

  • 为了让负数替换\d+[+-]?\d+
  • 允许分数:替换\d+[+-]?\d+(?:\.\d+)?


pol*_*nts 9

以下是我们将要使用的正则表达式的组件:

  • \d 是数字字符类的简写
  • + 是一个或多个重复说明符
  • * 是零或多重复说明符
  • (...) 执行分组
  • ^并且$分别是线锚的开始和结束

我们现在可以构成我们需要的正则表达式:

^\d+(,\d+)*$
Run Code Online (Sandbox Code Playgroud)

那是:

from beginning...
|    ...to the end
|          |
^\d+(,\d+)*$              i.e. ^num(,num)*$
 \_/  \_/ 
 num  num
Run Code Online (Sandbox Code Playgroud)

请注意,这*意味着只允许一个数字.如果你坚持至少两个数字,那么请+改用.您还可以\d+使用其他模式替换该数字,以允许例如符号和/或小数部分.

参考


高级主题:优化

(可选)您可以使括号不捕获性能:

^\d+(?:,\d+)*$
Run Code Online (Sandbox Code Playgroud)

如果味道支持它,你可以在这种情况下使所有重复占有欲:

^\d++(?:,\d++)*+$
Run Code Online (Sandbox Code Playgroud)

参考