2013-05-28 4 views
-3

У меня есть следующее Требование Пользователь может ввести несколько значений с помощью seprated , например. 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 

я следующий RegEx

^
    (?: 
    (?:[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

Возможно, если вы указали, что ** ** ваше регулярное выражение должно делать, мы, по крайней мере, иметь представление об этом. –

+0

Что такого особенного в '5000'..до хотите, чтобы цифры находились в определенном диапазоне – Anirudha

+0

Я обновил свой вопрос. пожалуйста, дайте мне знать, если потребуется более подробная информация – imdadhusen

ответ

2

Вы можете использовать это регулярное выражение

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

+ является квантором, который соответствует предшествующей группе или символ много раз ..

* является квантором, который соответствует предшествующей группе или символ - много раз.

[xyz] - класс персонажа, который чес кс или у или г

+0

Хороший ответ. возможно ли проверять первый элемент, должен быть меньше или равен второму пункту? например 10-20, но 20-10 недействительно. мой голос +1 – imdadhusen

+1

@imdadhusen нет, в регулярном выражении все это 'String'. Вам нужно будет анализировать значения и проверять их, чтобы вы могли проверить размеры родственников. Это легко сделать с помощью групп захвата. –

+0

Спасибо за информацию – imdadhusen

Смежные вопросы