Как представить диапазоны чисел регулярного выражения (например, от 1 до 12)?
Я сейчас пользуюсь ([1-9]|1[0-2])
представлять входные данные от 1 до 12. (Ведущие нули не допускаются.)
Однако это выглядит довольно нахально, а в некоторые дни выглядит просто грязно.
☞ Есть ли подходящий встроенный способ сделать это?
☞ Каковы другие способы представления диапазонов номеров?
9 ответов
Я склонен идти с такими формами, как [2-9]|1[0-2]?
который избегает возврата назад, хотя здесь это мало что меняет. С помощью XML Schema я был вынужден избегать таких "двусмысленностей", хотя регулярные выражения могут с ними справиться.
Да, правильный:
[1-9]|1[0-2]
В противном случае вы не получите 10.
Вот лучший ответ, с точным соответствием от 1 до 12.
(^0?[1-9]$)|(^1[0-2]$)
Предыдущие ответы не очень хорошо работают с проверкой регулярных выражений ввода HTML, где некоторые значения, такие как "1111" или "1212", все равно будут воспринимать его как допустимый ввод.
Как насчет:
^[1-9]|10|11|12$
Соответствует 0-9, или 10, или 11, или 12. и все, больше ничего не найдено.
Используйте следующий шаблон
(0?[1-9]|1[0-2])
используйте это, которое вернет значения от 1 до 12 (с января по декабрь ), даже если оно изначально начинается с 0 (01, 02, 03, ..., 09, 10, 11, 12)
Правильный шаблон для проверки чисел от 1 до 12 следующий:
(^[1-9][0-2]$)|(^[1-9]$)
Приведенное выше выражение полезно, когда у вас есть ввод с номером типа, и вам нужно, например, проверить месяц. Это связано с тем, что номер типа ввода игнорирует 0 перед любым числом, например: 01 он возвращает 1.
Вы можете увидеть это в действии здесь: https://regexr.com/5hk0s
если вам нужно проверить строковые числа, я имею в виду, когда вы используете ввод с типом текста, но ожидаете числа, например: месяц истечения срока действия карты или месяцы, приведенное ниже выражение может быть полезно для вас:
((^0[1-9]$)|(^1[0-2]$))
Вы можете увидеть это в действии здесь https://regexr.com/5hkae
Я надеюсь, что это очень поможет, потому что это очень сложно.
С уважением.
В python это соответствует любому числу от 1 до 12:
12|11|10|9|8|7|6|5|4|3|2|1
Порядок убывания имеет значение. В порядке возрастания 10, 11 и 12 будут соответствовать 1, поскольку регулярное выражение обычно выбирает первое совпадающее значение.