Регулярное выражение, чтобы разрешить только цифры 1-31 и отключить буквы и символы - PullRequest
0 голосов
/ 06 августа 2020

Я использую это регулярное выражение для DayDate input = type [text]

^(0?[1-9]|[1@2][0-9]|3[01])$

Я хочу отключить возможность ввода букв, которые в моем случае могут использовать пользователи.

Я не могу использовать input = type [number]

Я обнаружил, что \D должен разрешать только цифры в регулярном выражении, но не уверен, где его разместить в моем регулярном выражении, упомянутом выше

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Сокращение \d можно использовать вместо [0-9]. Это просто немного более короткая версия.

В то время как сокращение \d может использоваться для поиска «числа» (от 0 до 9), \D является полной противоположностью, представляющей все, что есть «. not a number ".

Используя \d, вы можете переписать ваше регулярное выражение в ^(0?[1-9]|[1@2]\d|3[01])$ без влияния на результат.

Resource: https://www.regular-expressions.info/shorthand.html

0 голосов
/ 06 августа 2020
^[1-9]$|^[1-2][0-9]$|^3[0-1]$

Это будет соответствовать:

  • одиночный di git от 1 до 9;
  • Либо 1, либо 2, за которыми следует любое число от 0 до 9, для соответствия от 10 до 29;
  • 3, за которым следует либо 0, либо 1, чтобы захватить 30 и 31.

Но регулярные выражения на самом деле не предназначены для такого рода вещь. Если у вас есть способ выполнить числовую проверку, сделайте это. Гораздо проще и эффективнее просто проверить, если $ num> 0 и <= 31. </p>

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