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



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

例如:12,561001909001000

我在前端使用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次或更多次,如括号后的*字符所示。

最新更新