我需要一个可以匹配1到1000之间用逗号分隔的数字字符串的正则表达式。
例如:12,56,100,190,900,1000
我在前端使用javascript,在后端使用php进行验证。理想情况下,我需要一个共同的正则表达式,这将适用于两者。
答案 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次或更多次 - 如括号后面的*
字符所示。