Требуется шаблон регулярного выражения для ввода текстового поля, допускающего числа от 0 до 100 и до 2 десятичных знаков, например, от 0,22 до 100,00 - PullRequest
1 голос
/ 23 мая 2019

Мне нужен шаблон регулярных выражений, чтобы разрешить числа от 0 до 100 с десятичными знаками.

Я попробовал следующий шаблон, но он допускает числа больше 100:

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

Ответы [ 2 ]

2 голосов
/ 23 мая 2019

В ваш шаблон включены соответствующие пробелы, которые имеют значение.

Без пробелов шаблон будет ^100(\.[0]{1,2})?|([0-9]|[1-9][0-9])(\.[0-9]{1,2})?$

Чтобы сопоставить либо 100 с необязательной точкой, либо 1 или 2 нулями, ИЛИ сопоставить цифру 0-99, за которой следуют 1 или 2 десятичных знака, чтобы вы могли обернуть весь шаблон в группу без захвата ^(?:....)$, используя чередование для любой из возможностей:

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

См. Демоверсию Regex

1 голос
/ 23 мая 2019

Попробуйте:

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

https://regex101.com/r/FxoGO9/2

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