Это, вероятно, не должно быть сделано, но это может быть сделано:
([0-3][2-9]|[1-3]1)-10-2011|[0-3][0-9]-1[12]-2011|[0-3][0-9]-[01][0-9]-201[2-9]
Предполагается, что все даты являются ДД-ММ-ГГГГ и действительны, и вам не нужно находить даты более поздние, чем в 2019 году, для которых они могут быть адаптированы при необходимости.
Протестировано в Dreamweaver CS5, и я сомневаюсь, что со временем они сильно изменили свой движок регулярных выражений. Notepad ++ regex не поддерживает панель, которая оказалась довольно вредной.
Чтобы понять, почему это работает, у нас есть 3 варианта сопоставления верхнего уровня, разделенных чертой (|
). Первая альтернатива:
([0-3][2-9]|[1-3][0-9])-10-2011
Что соответствует любым датам в октябре 2011 года с DD, не равным 01. Для поддержки 02-31 на уровне символов необходима группа подстрок ([0-3][2-9]|[1-3]1)
. Левая сторона этого столбца соответствует 02-39, пропуская 11, 21 и 31, а правая сторона принимает именно эти пропуски.
Следующая альтернатива верхнего уровня:
[0-3][0-9]-1[12]-2011
Что соответствует любому дню в ноябре и декабре 2011 года.
И последняя группа:
[0-3][0-9]-[01][0-9]-201[2-9]
Что соответствует любому дню любого месяца в 2012-2019 гг.