首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日期验证不适用于日期格式'd-M-Y‘

日期验证不适用于日期格式'd-M-Y‘
EN

Stack Overflow用户
提问于 2012-03-09 15:40:40
回答 1查看 638关注 0票数 1

在我的CakePHP-1.2应用程序中,我使用日期格式01-Jan-2012

我应该使用哪个日期验证规则来测试它?

我尝试了数组(‘date’,'dMy')。但它不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-28 20:11:18

通过阅读这本书,您可以看到,对于您选择的算法,不能在日期验证字段中使用分隔符。您将需要创建自定义验证规则。您可以使用自定义正则表达式规则执行此操作:

'/^((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})$/';

注意:此规则是蛋糕附带的罐装规则的修改版本。

因此,您需要执行以下操作:

代码语言:javascript
复制
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匹配。这将匹配2006年12月24日、2006年12月24日和2006年12月24日。如果要接受区分大小写的匹配,请删除它。

现在,您只需对有问题的字段运行该规则,就应该可以运行了。

祝好运。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9630526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档