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