add方法验证yyyy-dd-mm格式的日期有什么问题?
What's wrong in add method to validate date format in yyyy-dd-mm?
我正在尝试验证yyyy-dd-mm格式的日期。我正在尝试下面的验证器方法。它通过使用/^('d{4})(-)('d{1,2})(-)('d{1,2})$/
正则表达式验证日期。当我试图使用/^((?:19|20)'d'd)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/
验证它时,它工作错误。
jQuery.validator.addMethod(
"validateDateFormat",
function(value, element) {
var currVal = value;
if (currVal != '') {
var rxDatePattern = /^('d{4})(-)('d{1,2})(-)('d{1,2})$/;
//var rxDatePattern = /^((?:19|20)'d'd)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/;
var dtArray = currVal.match(rxDatePattern);
if (dtArray == null){
return false;
}
dtYear = dtArray[1];
dtMonth= dtArray[3];
dtDay = dtArray[5];
if (dtMonth < 1 || dtMonth > 12)
return false;
else if (dtDay < 1 || dtDay > 31)
return false;
else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31)
return false;
else if (dtMonth == 2)
{
var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
if (dtDay > 29 || (dtDay == 29 && !isleap))
return false;
}
}
return true;
},
"Please enter a valid date, date format should be (yyyy-mm-dd)."
);
我想验证的是:
- 只允许int和"-"。
- 日期只支持YYYY-MM-DD格式。
- YYYY应该大于1900并且应该是4 int。
- MM应该在01到12之间,应该是2个字符。
- DD应该在01到31之间,应该是2个字符。
正则表达式不是用来做数值处理的。
保持简单。使用regex匹配基本模式并提取相关的令牌,然后对得到的数字应用数字规则和其他业务规则。当您以后需要维护它时,您会感谢自己的。
相关文章:
- 我不知道我的编码有什么问题.(JavaScript)
- 我的流星路线出了什么问题
- 此nodeValue替换代码有什么问题
- 这个正则表达式的日期/时间有什么问题
- 我的CSS/Javascript下拉菜单测试代码出了什么问题
- 这个代码出了什么问题?(Jquery)
- 下面的Reg表达式出了什么问题
- 鼠标事件,我的代码出了什么问题
- 这个javascript语法有什么问题
- 动态创建foreignGroup并将其添加到svg中有什么问题
- 此代码中动态生成选择框有什么问题
- 我的javascript有什么问题?.className
- 这个 ajax.js 代码有什么问题
- JS代码有什么问题,让我知道代码是否可以改进
- 我的 Browserify JavaScript 代码有什么问题
- 图像上传功能将++(+1)副本添加到下一次上传.出了什么问题或如何重置“选定图像”
- 使用 Javascript 动态删除行.我的代码有什么问题
- AngularJS:这个注入我的控制器有什么问题
- 这个jQuery if语句有什么问题
- JavaScript:有人能告诉我我的代码出了什么问题吗?