Войти

Показать полную графическую версию : Регулярное выражение для проверки денежной суммы


BuilderMan
21-08-2006, 15:34
Помогите написать регулярное выражение
Как можно разрешить данные вида 0,1 или 0.1 или 0,01 или 0.01 или 1.00
но запретить 0,00 или 0.00 или -0,01 или 0,001 или 0.001

Vlad Drakula
21-08-2006, 15:42
я думаю что чтото вроде этого: ([1-9][0-9]*[,.][0-9][0-9] | 0[,.][0-9]?[1-9])

BuilderMan
21-08-2006, 15:54
я нашел вот такое
(^[0-9]*[1-9]+[0-9]*\.[0-9]*$)|(^[0-9]*\.[0-9]*[1-9]+[0-9]*$)|(^[0-9]*[1-9]+[0-9]*$)
но оно не ограничивает после запятой 2 знака и запятую не берет только точку
ну запятая лечится как я понимаю так
(^[0-9]*[1-9]+[0-9]*[\.,][0-9]*$)|(^[0-9]*[\.,][0-9]*[1-9]+[0-9]*$)|(^[0-9]*[1-9]+[0-9]*$)
остается обрезать дробную часть

Vlad Drakula
21-08-2006, 16:01
^([1-9][0-9]*[,.][0-9][0-9] | 0[,.][0-9]?[1-9])$

XCodeR
21-08-2006, 17:32
^[01]?[,\.][0-9]*$

Vlad Drakula
21-08-2006, 20:50
XCodeR
ваше выражение не съест 2,0...
а 0,00 назовет правильным...
баг однако ;)

XCodeR
21-08-2006, 22:00
Vlad Drakula
ваше выражение не съест 2,0....
это же почему?...
первый символ до точки либо 0, либо 1...
а 0,00 назовет правильным...
да... это есть....

P.S. ^([1-9][0-9]*[,.][0-9][0-9] | 0[,.][0-9]?[1-9])$
точку(.) надо слешовать....
тогда Ваш вариант, будет предпочтительней...
;)

Vlad Drakula
22-08-2006, 04:03
XCodeR
помнится в нутри квадратных скобок нету необходимости ескейпить точку.

E-mail
22-08-2006, 04:16
Vlad Drakula это смотря какая она идет по счету сначала и после чего.
лутше все эскейпить)

Vlad Drakula
23-08-2006, 11:24
E-mail
Vlad Drakula это смотря какая она идет по счету сначала и после чего.
лутше все эскейпить)
читаем доки... лишний эскейпинг может привести к непредсказуемым результатам!




© OSzone.net 2001-2012