2013-05-18 642 views
18

我想验证数字1-8的逗号分隔列表。逗号分隔的数字正则表达式

2,4,6,8,1是有效的输入。

我试过[0-8,]*但它似乎接受1234视为有效。它不需要逗号,而是让我键入大于8的数字。我不知道为什么。

+1

逗号需要位于字符类之外,并使用括号将其分组为数字字符。那就是:'([0-8],)+' –

+0

你说你想要数字1-8,但是你的正则表达式试图匹配0-8。这是什么? – Cairnarvon

+0

1-8只有高于8的 –

回答

22

[0-8,]*将匹配零或更多连续的08,的实例,您的字符串中的任何位置。你想要更多的东西是这样的:

^[1-8](,[1-8])*$ 

^字符串的开头匹配,并$结束匹配,以确保您正在检查的整个字符串。它将匹配一个数字,加上零个或多个逗号后面跟随一个数字的实例。

+0

如果我将尝试检查值1234,1345,4455 –

0

你需要一个号码+逗号的组合,可以重复:

^[1-8](,[1-8])*$ 

如果你不想记住圆括号?:到括号,就像这样:

^[1-8](?:,[1-8])*$ 
+0

21,22,24,343546对此表达式有效。最高的数字只能是8 –

+0

良好的捕获。修正了。 – quux00

1

你可以用这个正则表达式尝试:

^[1-8](,[1-8])+$ 
0
/^\d*(,\d*)*$/ 

这也将覆盖这些都是用逗号隔开的数值。

相关问题