类似于“2012-12-12”这样的正则表达式,应该怎么写,我看书看百度,写了好几个都不行~求教~

解决方案 »

  1.   

    http://blog.csdn.net/aking8736/article/details/2750066
      

  2.   

    如果你要验明这是一个确切存在的日期,光是靠正则是不切实际的,可以这样<script language="javascript">
    chkdate = function(str){
    alert(makedate(str.split(/\-/g)));//"Invalid Date" 即不合法的日期
    }makedate = function(arr)
    {
    return new Date(arr[0],arr[1],arr[2]);
    }</script>
    <input type="text" onblur="chkdate(this.value)" value="2011-12-12" />
      

  3.   

    http://blog.csdn.net/lxcnn/article/details/4362500^(?:(?:1[6-9]|[2-9][0-9])[0-9]{2}([-/.]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:(?:1[6-9]|[2-9][0-9])(?:0[48]|[2468][048]|[13579][26])|(?:16|[2468][048]|[3579][26])00)([-/.]?)0?2\2(?:29))$红色部分是连字符。目前是支持-/.和没有4种。如果按你的要求 可以修改为(-)
    过客的这个正则已经考虑了闰年。
    至于效率,不是长的正则效率一定低,这个正则里没有使用环视,在回溯方面问题也不大。如果是检测数量有限的日期的话,相信不会令你有所察觉
      

  4.   

    ([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))
    就用这个了,我在js中这样写的:还是不成~初学javascript,哪写错了?
    <script type="text/javascript" language="javascript">
      <!--
      function checkForm()
      {
        /*Regex  reg=new Regex([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])));*/
        
        if(document.wirte.title.value.length==0)
    {
      alert("请您输入留言标题");
      return false;
    }
        if(document.wirte.lydate.value.length==0)
    {
      alert("请您输入留言日期");
      return false;
    }
     
      else 
    {
      var date=document.wirte.lydate.value;
      if(date.matches(reg))
      {}
      else
      {
       alert("请输入正确的日期格式"YYYY-MM-DD"");
      }
    }
        }
      -->
      </script>
      

  5.   

    var reg = /^([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))$/
      

  6.   

    <script type="text/javascript" language="javascript">
      <!--
      function checkForm()
      {
        var reg=/^([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))$/;
        
        if(document.wirte.title.value.length==0)
    {
      alert("请您输入留言标题");
      return false;
    }
        if(document.wirte.lydate.value.length==0)
    {
      alert("请您输入留言日期");
      return false;
    }
     
      else 
    {
     var date=document.wirte.lydate.value;
     alert(date);
        if(reg.test(date))
      {
       alert("正确");
      }
      else
      {
       alert("请输入正确的日期格式"YYYY-MM-DD"");
       return false;
      } 

    }
      
      
      }
      -->
      </script>提交表单:
    <form action="" method="post" onSubmit="return checkForm()" name="wirte">
    没反应,哪里写错了~我看了好几遍,多谢了
      

  7.   

      楼上的朋友,这个正则表达式应该是能用的,好像现在就是认证的时候:reg.test(date)好像不行,所以javascript没有反应。可我也看不出哪里有问题~