alive
Цитата |
хотя вложили в еще одни скобки и по идее значение должно быть в другой переменной |
если предыдущие две цифры - 00 то:
если первая цифра года - 0, 2, 4, 6 или 8 то:
если вторая цифра года 0, 4 или 8 то:
год високосный
иначе:
если вторая цифра года - 2 или 6 то:
год високосный
Цитата (Invis1ble @ 6.09.2011 - 09:10) |
Версия 1.0 |
$dates = array(
'20000.01.30',
'2000.003.30',
'2000.05.030',
);
Цитата |
даты не нормальные |
Цитата |
Интересно, такие конструкции прокатят в htaccess? |
Цитата (Invis1ble @ 6.09.2011 - 12:23) |
не подходят под условия задачи - YYYY.mm.dd |
Цитата |
Пофикси уж |
$pattern =
'/^
# год
(?!0000)\pN*?(?:(
(?:
# високосный
([02468])|[13579])(?(2)[048]|[26]))(?(?<=00)(?(?<=[02468].{3})(?<=[048].{2})|(?<=[26].{2})))|
# невисокосный
\pN{2}
)
\.
# месяц
0*?(?:(0)|1)(?(3)[1-9]|[0-2])
\.
# число
0*?(?!00)(?:(?<!02\.)(3)|[0-2])
(?(4)
# 4-я "триада"
(?(?<=(?:01|03|05|07|08|10|12).{2})[01]|0)|
# 1-3 "триады"
(?(?<=02.{2})
# февраль
(?(?<=2)
# 3-я "триада"
(?(1)
# високосный год
\pN|
# невисокосный год
[0-8]
)|
# 1-2 "триады"
\pN
)|
# не февраль
\pN
)
)
$/ux';
Цитата |
дата 2000.05.030 (или 2c00.05.030) никак не может быть "true" |
Цитата (Invis1ble @ 6.09.2011 - 15:40) |
если предыдущие две цифры - 00 то: |
Цитата |
предыдущие, или по всей регулярке? |
Цитата |
что показал crash-test для времени обработки обеих ф-ий, не сравнивали? |