Как изобразить диапазоны чисел в регулярном выражении (например, от 1 до 12)? - PullRequest
7 голосов
/ 18 августа 2011

В настоящее время я использую ([1-9]|1[0-2]) для представления входных данных от 1 до 12. (Начальные нули не допускаются.)

Однако это выглядит довольно hacky , а в некоторые дни это выглядит откровенно грязный .

☞ Существует ли правильный встроенный способ сделать это?

☞ Каковы другие способы представления диапазонов чисел

Ответы [ 5 ]

8 голосов
/ 18 августа 2011

Да, правильный:

[1-9]|1[0-2]

В противном случае вы не получите 10.

7 голосов
/ 20 августа 2011

Я склонен использовать формы типа [2-9]|1[0-2]?, которые избегают возврата, хотя здесь это мало что меняет. XML Schema заставила меня избегать таких «двусмысленностей», хотя регулярные выражения могут с ними справиться.

6 голосов
/ 18 августа 2011

Вы можете использовать:

[1-9]|1[012]
3 голосов
/ 31 июля 2018

Вот лучший ответ с точным соответствием от 1 до 12.

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

Предыдущие ответы не очень хорошо работают с проверкой регулярного выражения ввода HTML, где некоторые значения, такие как «1111» или «1212»будет по-прежнему обрабатывать его как допустимый ввод.

0 голосов
/ 09 июля 2019

Как насчет:

^[1-9]|10|11|12$

Соответствует 0-9 или 10 или 11 или 12. Вот и все, ничто другое не найдено.

...