不需要重复模式正则表达式的最后一个字符

时间:2018-08-07 18:38:37

标签: regex

我有一个HTML5输入,该输入可以接受未知长度的字符串,以逗号分隔的5位数字。以下所有3个都是有效输入:

  • 12345
  • 12345,12345
  • 12345,12345,12345

,然后(从理论上讲)变成一个无限数。

我正在使用正则表达式进行验证。它几乎可以正常工作,但是我现在需要用逗号结尾,这是不必要的。

我现有的尝试:([0-5][0-9][0-4][0-9][1-6],)*(需要结尾的逗号)和([0-5][0-9][0-4][0-9][1-6],?)*(范围太广,将验证诸如1234512345之类的内容且没有逗号)。

我对正则表达式不太了解,我是否缺少简单的东西?

1 个答案:

答案 0 :(得分:1)

由于可选部分以,开头,因此您需要的是:

[0-5][0-9][0-4][0-9][1-6](,[0-5][0-9][0-4][0-9][1-6])*

不幸的是,您有一个复杂的要求,要求RE中有重复项,但是如果您放宽该约束,则可以执行以下更简洁的操作:

[0-9]+(,[0-9]+)*

甚至是这取决于您是否可以使用POSIX扩展的表达式:

\d+(,\d+)*

这使得查看第一个对象的操作要容易一些。