首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery验证引擎:更改日期格式

jQuery验证引擎:更改日期格式
EN

Stack Overflow用户
提问于 2014-11-26 06:47:16
回答 3查看 2.5K关注 0票数 0

我的数据交换代码

代码语言:javascript
复制
$(function(){ 

         $( "#task_start_date").datepicker({
         dateFormat: 'dd-M-yy',
         showOn: 'button',
         buttonImage :image_us,
         buttonImageOnly: true
        });
});

HTML输入:

代码语言:javascript
复制
<input type="text" class="form-control validate[required,custom[date]]" name="task_start_date" id="task_start_date" />

用于正确日期输入验证的JS函数:

代码语言:javascript
复制
"date": {                    
                    //  Check if date is valid by leap year
            "func": function (field) {
                    var pattern = new RegExp(/^(\d{4})[\/\-\.](0?[1-9]|1[012])[\/\-\.](0?[1-9]|[12][0-9]|3[01])$/);
                    var match = pattern.exec(field.val());
                    if (match == null)
                       return false;

                    var year = match[1];
                    var month = match[2]*1;
                    var day = match[3]*1;                   
                    var date = new Date(year, month - 1, day); // because months starts from 0.

                    return (date.getFullYear() == year && date.getMonth() == (month - 1) && date.getDate() == day);
                },                      
             "alertText": "* Invalid date, must be in YYYY-MM-DD format"
                },

在这里,regex需要YYYY-MM-DD (2014-11-26)格式,但是我们使用的是dd-M-yy(01-MAR-12)格式。

Regex尝试过:

代码语言:javascript
复制
/^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/

上述regex不起作用。如何更改regex以匹配预期的数据交换输出。在DB中插入的值是01-MAR-12,而不是2014-11-26

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-26 07:07:52

^(0?1-9\12\301)-{3}-\d{2}$

这应该能起作用。您尝试的正则表达式是dd/mm/yyyy或的格式。

票数 0
EN

Stack Overflow用户

发布于 2014-11-26 07:07:23

试试这个(没有测试):

代码语言:javascript
复制
(?:0[1-9]|1[0-9]|2[0-9]|3[01])-(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)-\d{2}
  • (?:0[1-9]|1[0-9]|2[0-9]|3[01]):01至09,10至19,20至29,30至31。但是二月没有超过29的东西,所以你如何处理我们不是基于regex的
  • -:匹配催眠术
  • (?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC):比赛月份
  • -:匹配催眠术
  • -\d{2}:按任意顺序匹配任意两位数字

你可以缩小速度,但我现在没有时间。

票数 0
EN

Stack Overflow用户

发布于 2015-08-15 05:39:22

使用这个

代码语言:javascript
复制
"date": {                    
  //	Check if date is valid by leap year
  "func": function (field) {
  var pattern = new RegExp(/^(0?[1-9]|[12][0-9]|3[01])[\/\-\.](0?[1-9]|1[012])[\/\-\.](\d{4})$/);
	var match = pattern.exec(field.val());
	if (match == null)
	   return false;                     

	var year = match[3];
	var month = match[2]*1;
	var day = match[1]*1;					
	var date = new Date(year, month - 1, day); // because months starts from 0.

  return (date.getFullYear() == year && date.getMonth() == (month - 1) && date.getDate() == day);
  },                		
  "alertText": "* Invalid date, must be in dd-mm-yyyy format"
},

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

https://stackoverflow.com/questions/27142916

复制
相关文章

相似问题

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