Мне нужно составить регулярное выражение что бы оно находило в тексте дату в разных форматах, при том записывая в совпадения только число и месяц (для дальнейего анализа), должно находить дату в следующих форматах:
01/12 1/11 (01/12/2001 1/11/2001)
22.12 3.11 (22.12.2002 3.11.2002)
02-09 4-08 (02-09-1999 4-08-1999)
2 мар 17 фев (2 мар 2007 17 фев 2007)
3 апреля 22 января (3 апреля 1989 22 января 1989)
для дат без текстовых названий месяцев я использую такое регулярное выражение
/(0?[1-9]|[12][0-9]|3[01])[\/\-\.](0?[1-9]|1[012])/
Вроде работает правильно 1. скажите пожалуйста на сколько такое выражение составлено грамотно? можно ли его улучшить? просто для проверки составил ли я его без косяков?
для дат где присутствуют буквенные названия месяцев пробую так:
/(0?[1-9]|[12][0-9]|3[01])[- _](янв|фев|мар|апр|май|нюн|июл|авг|сен|окт|ноя|дек)/
и ещё одно для названий с полным месяцем
/(0?[1-9]|[12][0-9]|3[01])[- _](января|февраля|марта|апреля|мая|нюня|июля|августа|сентября|октября|ноября|декабря)/
Ваш регекс для цифровых дат следует дополнить блоком [ \/\.\-]
:
/(0?[1-9]|[12][0-9]|3[01])[\/\-\.](0?[1-9]|1[012])[ \/\.\-]/
А для текстовых дат - посложнее:
/(0?[1-9]|[12][0-9]|3[01]) (янв(?:аря)?|фев(?:раля)?|мар(?:та)?|апр(?:еля)?|мая|июн(?:я)?|июл(?:я)?|авг(?:уста)?|сен(?:тября)?|окт(?:ября)?|ноя(?:бря)?|дек(?:абря)?)/
Очень рекомендую сайт regex101 - отлично подходит для разработки и тестирования регексов
Когда Вы введете свое первое выражение, то увидите, почему оно отрабатывает неправильно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Возникла проблема с рамкойРаньше использовал простой :after и ставил тексту фон, тут же на фоне картинка, и такой вариант не прокатывает