我在下面写了一些代码行,用于根据多种日期格式(如
)检查日期格式 function checkValidDate(dateValue)
{
var dateFormat = getDateFormat();
switch(dateFormat)
{
case "d-m-Y":
var regex = /^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$/;
if(dateValue.match(regex))
return true;
else
return false;
break;
case "m-d-Y":
var regex = /^(0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$/;
if(dateValue.match(regex))
return true;
else
return false;
break;
case "Y-m-d":
var regex = /^(19|20)\d[- /.](0[1-9]|1[012]\d(0[1-9]|[12][0-9]|3[01]))$/;
if(dateValue.match(regex))
return true;
else
return false;
break;
}
}
$("#dobfield").blur(function(){
var dob = $("#dobfield").val().trim();
var check = checkValidDate(dob);
if(check ==false)
alert("wrong");
});
此项目接受三种格式" d-m-Y"," m-d-Y"," Y-m-d"。 现在我试图根据当前选择的日期格式检查输入的日期是否是有效的正则表达式格式。
以上代码无效!请帮帮我!!!
答案 0 :(得分:1)
function checkValidDate(dateValue)
{
var dateFormat="d-m-Y";
switch(dateFormat)
{
case "d-m-Y":
var regex = /^([1-9]|[12][0-9]|3[01])[- /.]([1-9]|1[012])[- /.]\d\d$/;
if(dateValue.match(regex))
return true;
else
return false;
break;
case "m-d-Y":
var regex = /^([1-9]|1[012])[- /.]([1-9]|[12][0-9]|3[01])[- /.]\d\d$/;
if(dateValue.match(regex))
return true;
else
return false;
break;
case "Y-m-d":
var regex = /^\d\d[- /.]([1-9]|[12][0-9]|3[01])[- /.]([1-9]|1[012])$/;
if(dateValue.match(regex))
return true;
else
return false;
break;
default:
return false;
break;
}
}
我已经改变了正则表达式,以支持您所说的格式。希望这能帮助你。
答案 1 :(得分:0)
我在这里看到了多个问题。
使用dateFormat切换是否有效?
d-m-Y实际上是dd-mm-YYYY吗? 在这种情况下,第一个正则表达式(除此之外没有测试 - 没有意义)是错误的。这个可行:
case "d-m-Y":
var regex = /^(0?[1-9]|[12][0-9]|3[01])[\-\-](0?[1-9]|1[012])[\-\-]\d{4}$/;
使用正则表达式是不够的。您需要使用更复杂的正则表达式来过滤掉31-2岁的日期,或者例如有29-2的日期。
您最好的选择是使用MomentJS。它很简单,而不是轻量级,经过严格的文档测试。