Если вы хотите сопоставить дни, для которых нужно выполнить следующее регулярное выражение:
((1|2)[0-9]|3[0-1]|0?[1-9])
Для нужного месяца:
(0?[1-9]|1[0-2])
Для нужного года (только 1900 и2000, для 3000 вам может понадобиться обновить ваш скрипт, когда мы прибудем в 2999):
((19|20)?[0-9]{2})
После того, как у вас есть разные ордера с разделителями и датами, так:
((1|2)[0-9]|3[0-1]|0?[1-9])\/(0?[1-9]|1[0-2])\/((19|20)?[0-9]{2}) # for DD/MM/YYYY
((1|2)[0-9]|3[0-1]|0?[1-9])\-(0?[1-9]|1[0-2])\-((19|20)?[0-9]{2}) # for DD-MM-YYYY
((19|20)?[0-9]{2})\/((1|2)[0-9]|3[0-1]|0?[1-9])\/(0?[1-9]|1[0-2]) # for YYYY/DD/MM
((19|20)?[0-9]{2})\-((1|2)[0-9]|3[0-1]|0?[1-9])\-(0?[1-9]|1[0-2]) # for YYYY-DD-MM
...
Наконец, вам нужно объединить их и получить одно совпадение с (expression1|expression2|...)
:
\W(((1|2)[0-9]|3[0-1]|0?[1-9])\/(0?[1-9]|1[0-2])\/((19|20)?[0-9]{2})|((1|2)[0-9]|3[0-1]|0?[1-9])\-(0?[1-9]|1[0-2])\-((19|20)?[0-9]{2})|((19|20)?[0-9]{2})\/((1|2)[0-9]|3[0-1]|0?[1-9])\/(0?[1-9]|1[0-2])|((19|20)?[0-9]{2})\-((1|2)[0-9]|3[0-1]|0?[1-9])\-(0?[1-9]|1[0-2]))\W
Мне нужно \W
в начале и в конце регулярного выражения.Эта проверка, если у вас есть что-нибудь (\ s, \ ;, \ ,, и т. д.).
DEMO
Вам необходимо заполнить пропущенные комбинации.
Наслаждайся;)