Reg Ex - не позволяет ноль - PullRequest
2 голосов
/ 09 марта 2010

Извините за мое невежество. Мои знания регулярных выражений чрезвычайно ограничены.

У меня есть следующее регулярное выражение для валидатора регулярного выражения.

^(\d{1,3},?(\d{3},?){0,2}\d{3}|\d{1,3})$

В настоящее время допускается ноль. Мне нужно обновить его, чтобы он не допускал значения 0.

[Edit: просто чтобы уточнить, я бы хотел исключить значение ноль, а не единственное «0» - спасибо]

Любая помощь будет принята с благодарностью.

Спасибо * 1012 хочет подарить Петербургу *

Ответы [ 2 ]

6 голосов
/ 09 марта 2010

Возможно, вы ищете что-то вроде этого:

^[1-9]\d{0,2}(\d*|(,\d{3})*)$
3 голосов
/ 09 марта 2010

0 разрешено второй частью вашего регулярного выражения. Измените его на:

^(\d{1,3},?(\d{3},?){0,2}\d{3}|[1-9]\d{0,2})$

Он гарантирует, что первая цифра не равна нулю, когда общее количество цифр меньше или равно трем.

Регулярное выражение по-прежнему допускает шаблоны типа 000,000,000 и 000,123. Чтобы исправить это, вы можете изменить первую часть регулярного выражения на:

^([1-9]\d{0,2},?(\d{3},?){0,2}\d{3}|[1-9]\d{0,2})$

Или переписать его как

^[1-9]\d{0,2}(,?\d{3}){0,3}$

Это по-прежнему позволяет 123,456789 и 123456,789. Давайте изменим это на:

^[1-9]\d{0,2}(?:(,\d{3}){0,3}|(\d{3}){0,3})$

Это позволит 123,456,789 и 123456789, но не 123,456789 или 123456,789

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...