csv数字的正则表达式,从1到1000

时间:2012-10-16 06:59:59

标签: php javascript regex

我需要一个可以匹配1到1000之间用逗号分隔的数字字符串的正则表达式。

  

例如:12,56,100,190,900,1000

我在前端使用javascript,在后端使用php进行验证。理想情况下,我需要一个共同的正则表达式,这将适用于两者。

2 个答案:

答案 0 :(得分:3)

1-1000范围内的数字,分隔逗号,由

匹配
(?<=,|^)([1-9][0-9]{0,2}|1000)(?=,|$)

答案 1 :(得分:2)

如果你想匹配整行,那么应该这样:

^([1-9][0-9]{0,2}|1000)(,([1-9][0-9]{0,2}|1000))*$

根据您的要求,您可能还希望在逗号的开头,结尾和/或之后允许空格。

这将允许开头的空格:
^\s*([1-9][0-9]{0,2}|1000)(,([1-9][0-9]{0,2}|1000))*$

这将允许最后的空格:
^([1-9][0-9]{0,2}|1000)(,([1-9][0-9]{0,2}|1000))*\s*$

这将允许逗号后面的空格:
^([1-9][0-9]{0,2}|1000)(,\s*([1-9][0-9]{0,2}|1000))*$

根据自己的喜好将这些结合起来。

编辑2:如果您想在分箱或结尾处使用逗号,那么您的正则表达式就会变为

^,?([1-9][0-9]{0,2}|1000)(,\s*([1-9][0-9]{0,2}|1000))*,?$

此处,,?表示您可以有0或1个逗号。

编辑解释,按要求:

    开头的
  • ^和结尾的$是输入标记的开头/结尾 - 它们确保我们测试整个输入
  • 圆括号按照您的预期工作
  • [1-9]匹配数字1到9,类似[0-9]匹配数字0到9
  • {0,2}表示上一部分(在我们的例子中为[0-9])介于0到2次之间
  • |是合乎逻辑的OR - 在匹配之前的部分或之后的部分

因此,在第一组括号中,我们匹配数字1到9,后跟0,1或2位数字0到9 - 这给出了1到999之间的数字 - 或者我们匹配1000。

然后我们匹配一个逗号,然后匹配如上所述的相同块 - 并且该批次匹配0次或更多次 - 如括号后面的*字符所示。

相关问题