2014-11-24 2 views
1

Мне нужно создать регулярное выражение, которое соответствует двум различным шаблонам. Поэтому мне нужно проверить строки, которые соответствуют регулярному выражению: /^[\d]*.{0,1}[\d]{0,2}$, которые в основном означает, что любое положительное число с плавающей запятой или только символ «-»Regex with or statement

Я думал, что регулярное выражение: /^[\d]*.{0,1}[\d]{0,2}$|^[-]$/ будет делать эту работу, но он принимает любое количество или любые одиночный символ. У кого-нибудь есть регулярное выражение, которое будет работать для этого?

+0

ли эта помощь? См. Http://stackoverflow.com/questions/7708333/regular-expression-to-accept-only-positive-numbers-and-decimals – userDEV

ответ

0

Имейте в виду, что . соответствует любой символ, а не только период. Таким образом:

^[\d]*.{0,1}[\d]{0,2}$ 

Соответствует любой отдельной строке символов. [\d]* счастливо соответствует 0 символам, а также [\d]{0,2}, что оставляет .{0.1} или 0-1 любого персонажа. Вы можете избежать периода с помощью обратной косой черты.

^[\d]*\.{0,1}[\d]{0,2}$|^-$ 

Хотя, я бы убрал немного больше. [\d] может быть просто \d и \.{0,1} можно записать \.?

^\d*\.?\d{0,2}$|^-$ 
+0

Большое спасибо. Я забыл, что этот период нужно избегать. Мне просто пришлось немного изменить ваше регулярное выражение, чтобы заставить его работать:^\ d * \.? \ D {0,2} $ |^- $ Это позволяет сопоставлять все шаблоны ###. ## или ### или просто - – Vestrep

-1

Это должно сработать.

/^([\d]*.{0,1}[\d]{0,2}|\-)$/ 

Просто предупреждение, хотя. Регулярное выражение, которое вы указали, допускает отрицательные целые числа, поэтому что-то вроде -14 будет проверяться. Я не знаю, предназначено ли это, но я оставил его таким образом.