【问题标题】:Regex for birthday date asp.net生日日期asp.net的正则表达式
【发布时间】:2012-01-26 11:36:00
【问题描述】:

regexValidator 的正则表达式对于我希望在其中具有日期格式的字段是什么:

dd/MM/yyyy

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

非常感谢您的帮助

【问题讨论】:

  • 您确实意识到您必须每年回到那个正则表达式并更新它?听起来不是一个好主意。另外,如果用户输入 31/02/1999 怎么办?
  • 大概你只是使用一个字符串生成器来拥有一个动态的正则表达式。然后,您可以轻松解决这两个问题。
  • 普通日期和生日日期有区别吗?
  • @leppie : 生日日期必须在过去。
  • @Rotem:这对约会的正则表达式有何影响?

标签: c# asp.net .net regex


【解决方案1】:

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

DateTime.TryParse on MSDN

编辑:我现在意识到日期和出生日期之间实际上是有区别的,因为出生日期不能在未来。

要在您的验证中强制执行此操作,您还应该使用 CompareTo.DateTime.Now < 0 确保日期是过去的日期。

【讨论】:

    【解决方案2】:

    您也可以在客户端工作并使用 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>
    

    【讨论】:

      猜你喜欢
      • 2012-03-08
      • 1970-01-01
      • 2012-12-17
      • 2020-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      相关资源
      最近更新 更多