对于少于3个字符的字符串,RegEx失败

时间:2013-12-18 19:15:45

标签: regex

我正在使用RegEx来测试字符串是否有效。字符串必须以数字([0-9])开头和结尾,但可以包含逗号。

我提出了这个示例,但是对于少于3个字符的字符串(例如1151,8一样有效),它失败了。据推测,这是因为我专门测试了第一个和最后一个角色,但我不知道其他任何方式。

如何更改此RegEx以符合我的要求。感谢。

^[0-9]+[0-9\,]+[0-9]$

3 个答案:

答案 0 :(得分:3)

使用此:

^[0-9]+(,[0-9])?$

,[0-9]部分将是可选的

可视化:

enter image description here

如果您想要允许多个逗号组...则将?替换为*

如果你想在逗号之后允许数字组(在你的例子中似乎不是这种情况),那么你也应该把+放在那个数字组之后。

如果需要上述两种方法,您的最终正则表达式可能如下所示:

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

enter image description here

答案 1 :(得分:1)

^\d+(?:,\d+)*$

应该有用。

始终在开头有一个或多个数字,可选地后跟任意数量的逗号分隔的一个或多个数字的其他组。

如果你允许逗号彼此相邻,那么第二个+应该是*,我认为。

答案 2 :(得分:0)

我会说正则表达式

\d(,?\d)*

应满足一个或多个数字,只能用一个逗号分隔。注意,1,2失败