Юлианский день регулярных выражений без ведущих нулей
Я действительно изо всех сил пытаюсь создать Reg Ex для Julian Day, который не допускает ведущих нулей.
Я использую его для проверки ввода с помощью JavaScript Reg Ex. Это должно соответствовать от 1 до 366.
Пример совпадений:
- 1
- 99
- 366
- 159
Пример совпадения ошибок:
- 01
- 001
- 099
- 367
- 999
- 0
Я попробовал это на regex101:
^ [1-9] | [1-9] [0-9] | [1-3] [0-5] [0-9] | 36 [0-6] $
Но поскольку я не получаю правильные части вниз правильно. Поэтому, когда я ввожу 266, я получаю совпадение со 2 и 66. (Эта проблема переводится в мой элемент управления проверкой ввода).
Я думал о попытке использовать +
для одного или нескольких, но мне нужно не допускать начальных нулей, чтобы не работал.
Я прочитал руководство о том, как задать вопрос RegEx, и постарался следовать ему, но если я что-то пропустил, пожалуйста, сообщите мне, и я обновлю свой вопрос
1 ответ
Основными вопросами являются два: 1) альтернативы должны быть сгруппированы так, чтобы ^
а также $
якоря могут быть применены ко всем из них, 2) [1-3][0-5][0-9]
часть не соответствует 160
в 199
а также 260
в 299
эта часть должна была быть разбита на две отдельные ветви, [12][0-9]{2}|3[0-5][0-9]
,
Вы можете использовать
^(?:[1-9]|[1-9][0-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-6])$
Смотрите демо-версию регулярного выражения.
подробности
^
- начало строки(?:
- группа альтернатив:[1-9]
- с 1 по 9|
- или же[1-9][0-9]
-10
в99
|
- или же[12][0-9]{2}
-100
в299
|
- или же3[0-5][0-9]
-300
в359
|
- или же36[0-6]
-360
в366
)
- конец группы чередования$
- и конец строки.