2015-12-01 2 views
2

Вот что у меня до сих пор: ^([<>0-9]{0,4}(\.[0-9]{1,4})?)?$Regex, чтобы номер с ведущим специальный символ

Мне нужно, чтобы следующее:

1234.1234 
.11 
0.11 
>11 
<11 
< 11 

мне нужно следующее на провал:

12345.12345 
12345 
.12345 
12>3 
123< 
>>123 
<<123 

Я не могу вычислить > и < частей, чтобы разрешить только один раз и только привести строку.

Спасибо!

ответ

3

Вы можете использовать этот шаблон:

^(?:[<>] ?)?(?:[0-9]{1,4}(?:\.[0-9]{1,4})?|\.[0-9]{1,4})$ 

demo

Это гарантирует, что существует по крайней мере одна цифра с этим чередованием:
[0-9]{1,4}(?:\.[0-9]{1,4})? | \.[0-9]{1,4}
и делает пространство только дополнительно, если есть < или a > в начале с:
^(?:[<>] ?)?

Я предположил, что группы захвата не нужны, так что я использовал не-захватив группы вместо: (?:...)

Обратите внимания, что сообразить буквальную точку вам нужно, чтобы избежать его: \.

+1

совершенно, спасибо ! – localman

0

Я думаю, ^[<>]?\s?(\d{,4})?\.?(\d{1,4})?$ должен это сделать.

Вы можете использовать http://regexpal.com, чтобы помочь вам проверить.

+1

Спасибо Эрик за ваш ответ – localman

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