2013-05-28 39 views
-3

我有以下要求 用户可以输入多个值,分别为 , 10,20,30,35-40,45,50-55 //有效如何写入正确的正则表达式

User can enter multiple values - seprated 
e.g. 10,20-30,35-40 //Valid 
e.g. 10,20-30,35-40,-1000 //Invalid 

我有以下的正则表达式

^
    (?: 
    (?:[0-9]?\d|[0-9])(?:-[0-9]?\d|[0-9])? 
) 
    (?: 
    ,(?:[0-9]?\d|[0-9])(?:-[0-9]?\d|[0-9])? 
)* 
$ 

I am validating following value 
10,20-30,35-40  Valid 
01-50,    invalid 
50     Valid 
500     Valid 
40-50,50-60,5,50 Valid 
40-50,1234-4567  Invalid (Expected: this should be valid) 
5-50    Valid 
5,80    Valid 
8,71    Valid 
test and lol  Invalid 
08,60    Valid 

请帮我写正确的正则表达式来实现正确的输出。

+6

或许,如果你指定的**您正则表达式应该做的事情,我们至少有一个关于它的想法。 – 2013-05-28 06:59:39

+0

什么是非常特殊的'5000'..do你想要的数字在特定范围 – Anirudha

+0

我已更新我的问题。请让我知道如果需要更多的细节 – imdadhusen

回答

2

可以使用这个表达式

^\d+([,-]\d+)*$ 

+是量词,其在前基或字符匹配多次..

*是量词,其在前基或字符0匹配多次..

[xyz]是一个字符类的垫子CHES一个X ÿž

+0

很好的答案。是否有可能验证第一个项目应该小于或等于第二个项目?例如10-20有效,但20-10无效。我的投票+1 – imdadhusen

+1

@imdadhusen不,在正则表达式中,一切都是'String'。您将需要实际解析这些值并检查它们是否要检查亲属的大小。这可以通过捕获组轻松完成。 –

+0

感谢您的信息 – imdadhusen