正则表达生日期asp.net

时间:2012-01-26 11:36:01

标签: c# asp.net .net regex

对于我希望格式化日期的字段,regexValidator的正则表达式是什么:

dd/MM/yyyy

dd - 01 - 31
MM - 01 - 12
yyyy - 1900 - 2012

非常感谢您的帮助

2 个答案:

答案 0 :(得分:3)

您的条件不一定符合合法日期。考虑日期30/02/2012。正则表达式会让它通过验证,但没有这样的日期。我建议你改用DateTime.TryParse

DateTime.TryParse on MSDN

编辑:我现在意识到日期和出生日期实际上存在差异,因为出生日期不可能在将来出现。

要在验证中强制执行此操作,您还应使用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>