Задать вопрос
@inpactor666

Теоретически возможно ли дать регулярное выражение, которое правильно принимает 29 февраля, только тогда, когда данный год действительно високосный?

Теоретически возможно ли дать регулярное выражение, которое правильно принимает 29 февраля, только тогда, когда данный год действительно високосный?
  • Вопрос задан
  • 551 просмотр
Подписаться 1 Простой 9 комментариев
Пригласить эксперта
Ответы на вопрос 4
dollar
@dollar
Делай добро и бросай его в воду.
Високосный год:
\d\d(?:[02468][048]|[13579][26])
Ответ написан
Alexandroppolus
@Alexandroppolus
кодир
из википедии

год, номер которого кратен 400, — високосный;
остальные годы, номер которых кратен 100, — невисокосные (например, годы 1700, 1800, 1900, 2100, 2200, 2300);
остальные годы, номер которых кратен 4, — високосные[5].
все остальные годы — невисокосные.


регулярка, которая проверяет, что число - високосный год (без нулей впереди):
/^(?!0+)\d*(?:[48]|(?:[48]|[02468][048]|[13579][26])00|(?:(?!00$)[02468][048]|[13579][26]))$/


для года фиксированной длины, с нулями впереди, если нужно
/^(?=\d{4}$)(?!0+$)\d*(?:(?:[02468][048]|[13579][26])00|(?!00$)(?:[02468][048]|[13579][26]))$/gm

(самое первое число - длина)
Ответ написан
Комментировать
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
c 1900 по 2100
29\.0?2\.(1904|1908|1912|1916|1920|1924|1928|1932|1936|1940|1944|1948|1952|1956|1960|1964|1968|1972|1976|1980|1984|1988|1992|1996|2000|2004|2008|2012|2016|2020|2024|2028|2032|2036|2040|2044|2048|2052|2056|2060|2064|2068|2072|2076|2080|2084|2088|2092|2096)

Если нужен более широкий диапазон дат, то вы или оптимист (2100+) или историк (1900-)
Ответ написан
AgentSmith
@AgentSmith
Это мой правильный ответ на твой вопрос
распределение високосных годов:

год, номер которого кратен 400, — високосный;
остальные годы, номер которых кратен 100, — невисокосные (например, годы 1700, 1800, 1900, 2100, 2200, 2300);
остальные годы, номер которых кратен 4, — високосные[5].
все остальные годы — невисокосные.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Wanted. Санкт-Петербург
До 450 000 ₽
Wanted. Санкт-Петербург
До 120 000 ₽
Wanted. Санкт-Петербург
До 100 000 ₽
03 янв. 2025, в 23:21
5000 руб./за проект
03 янв. 2025, в 23:15
3000 руб./за проект
03 янв. 2025, в 23:14
1500 руб./за проект