对于我希望格式化日期的字段,regexValidator的正则表达式是什么:
dd/MM/yyyy
dd - 01 - 31
MM - 01 - 12
yyyy - 1900 - 2012
非常感谢您的帮助
答案 0 :(得分:3)
您的条件不一定符合合法日期。考虑日期30/02/2012。正则表达式会让它通过验证,但没有这样的日期。我建议你改用DateTime.TryParse
。
编辑:我现在意识到日期和出生日期实际上存在差异,因为出生日期不可能在将来出现。
要在验证中强制执行此操作,您还应使用CompareTo.DateTime.Now < 0
确保日期已过去。
答案 1 :(得分:1)
你也可以做工作客户端并使用Date的setFullYear函数来检查日期是否有效..我为你写了这个,你也可以在运行脚本之前使用提供的正则表达式来测试字段。
<script type="text/javascript">
function checkDate() {
var content = document.regexForm.input.value;
var splitResult = content.split("/");
if(splitResult.length ==3){
var day = splitResult[0];
var mon = splitResult[1] - 1; //month is from 0-11 (0:jan,11:dec)
var yr = splitResult[2];
//create a new date object set full year with the params
var myDate = new Date();
myDate.setFullYear( yr, mon, day);
//the function takes in the strings and creates a valid date..
//so if you pass in january 40, the new date is Feb 9th and the month is 02 not 01
if(myDate.getMonth() != mon){
alert("not valid");
}
else{
alert("is valid");
}
}
else{
alert("not valid");
}
}
</script>
<body>
<form name="regexForm">
dd/mm/yyyy <BR>
<input type="text" name="input">
<input type=button value="run test regex" onClick="checkDate();return true;">
</form>