Читая книгу, вы видите, что вы не можете использовать разделители в поле проверки даты для выбранного вами алгоритма. Вам нужно будет создать собственное правило проверки. Это можно сделать с помощью правила пользовательского регулярного выражения:
'/^((31(?!\\ (Feb(ruary)?|Apr(il)?|June?|(Sep(?=\\b|t)t?|Nov)(ember)?)))|((30|29)(?!\\ Feb(ruary)?))|(29(?=\\ Feb(ruary)?\\ (((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)))))|(0?[1-9])|1\\d|2[0-8])\\-(Jan(uary)?|Feb(ruary)?|Ma(r(ch)?|y)|Apr(il)?|Ju((ly?)|(ne?))|Aug(ust)?|Oct(ober)?|(Sep(?=\\b|t)t?|Nov|Dec)(ember)?)\\-((1[6-9]|[2-9]\\d)\\d{2})$/';
Примечание: это правило является модифицированной версией консервированных, с которыми поставляется торт.
Итак, вы хотели бы сделать:
var $validate = array(
'born' => array(
'rule' => '/^((31(?!\\ (Feb(ruary)?|Apr(il)?|June?|(Sep(?=\\b|t)t?|Nov)(ember)?)))|((30|29)(?!\\ Feb(ruary)?))|(29(?=\\ Feb(ruary)?\\ (((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)))))|(0?[1-9])|1\\d|2[0-8])\\-(Jan(uary)?|Feb(ruary)?|Ma(r(ch)?|y)|Apr(il)?|Ju((ly?)|(ne?))|Aug(ust)?|Oct(ober)?|(Sep(?=\\b|t)t?|Nov|Dec)(ember)?)\\-((1[6-9]|[2-9]\\d)\\d{2})$/i',
'message' => 'Enter a valid date in Day-Mon-Year format.'
)
);
Примечание: 'i' в конце регулярного выражения, это просто означает, что это совпадение Case Insensitive
. Это будет соответствовать 24 декабря 2006 года, 24 декабря 2006 года и 24 декабря 2006 года. Удалите его, если хотите принять регистр с учетом регистра.
Теперь вы можете просто запустить это правило в отношении рассматриваемого поля, и вам следует идти вперед.
Удачи.