当前位置:编程学习 > C#/ASP.NET >>

验证dd-MM-yyyy日期格式的正则表达式

<script language="javascript" type="text/javascript">

    function checkDate() {
       var reg = /^(\d{2})([-])(\d{2})([-])(\d{4})/;
    if (!reg.test(window.event.srcElement.value) && window.event.srcElement.value != "") {
        document.getElementById(window.event.srcElement.id).focus();
        alert( "日期格式不正确!\n正确格式为:01-08-2012"); 
        return false;
    }

类似这样的,怎么样能验证日期呢. --------------------编程问答-------------------- 你的效果不是已经实现了吗?你想问的是什么? --------------------编程问答--------------------

  function checkDate() {
  var reg = /^(\d{2})([-])(\d{2})([-])(\d{4})/;
  varsrcevalue= "2012-1-1";
  if (srcevalue !=null&& !reg.test(srcevalue)) {
  document.getElementById(srceid).focus();
  alert( "日期格式不正确!\n正确格式为:01-08-2012");  
  return false;
  }

 
--------------------编程问答-------------------- 日和月份没验证. --------------------编程问答--------------------
var reg = /^\d{2}[-]\d{2}[-]\d{4}$/gi;
--------------------编程问答--------------------
var reg = /^\d{2}[-]\d{2}[-]\d{4}$/gi;
--------------------编程问答-------------------- 这种最好不用正则,太慢了,两种方法会比较快:
1.date.parse/date.tryparse检查是否合法,缺点是不知道哪部分不合法
2.用你原来的正则验证,然后取出日、月等部分,用byte.Tryparse转换,再看看是否合法,这样还可以检查闰年、闰月、大小月。 --------------------编程问答-------------------- if(Regex.IsMatch(start.Text,@ "^(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29))$)|(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))$ ")) 


yyyy-MM-dd --------------------编程问答-------------------- \d{1,2}-\d{1,2}-\d{4} --------------------编程问答-------------------- 还有没有其他方法呢 --------------------编程问答-------------------- 有没有dd-mm-yyyy这种的日期正则表达式呢 --------------------编程问答-------------------- My97DatePicker 推荐日期插件 

/////////////////////////////////////

var reg = /^\d{2}[-]\d{2}[-]\d{4}$/gi; 

这个就是正则  --------------------编程问答-------------------- 参考我的博客
[url=http://blog.csdn.net/lxcnn/article/details/4362500]正则应用之——日期正则表达式[\url] --------------------编程问答-------------------- 参考我的博客
正则应用之——日期正则表达式 --------------------编程问答--------------------
引用 13 楼  的回复:
参考我的博客
正则应用之——日期正则表达式


如果是dd-mm-yyyy这种的日期正则表达式,你的那里要怎么样改呢. --------------------编程问答--------------------
4.2 其它形式扩展里已经经了,把不需要的其它连字符去掉就是了

^(?:(?:(?:0[1-9]|1[0-9]|2[0-8])-(?:0[1-9]|1[0-2])|(?:29|30)-(?:0[13-9]|1[0-2])|31-(?:0[13578]|1[02]))-(?!0000)[0-9]{4}|29-02-(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00))$
--------------------编程问答-------------------- 好象不行,如:10-20-2012 日-月-年的格式不行. --------------------编程问答-------------------- dd-mm-yyyy 如:10-20-2012这样的就验证不了. --------------------编程问答-------------------- 正则:

1、
/^(?:[0-9]|[0][1-9]|[1-2]\d|3[0-1])-(?:[1-9]|0[1-9]|[1][0-2])-(?:\d{4})$/
判断了格式为dd-mm-yyyy、d-m-yyyy、dd-m-yyyy、d-mm-yyyy符合要求,这里面判断了日期为1-31 月份为1-12 年只判断了4位数字
2、如果楼主严格要求的格式为dd-mm-yyyy 则为
/^(?:[0][1-9]|[1-2]\d|3[0-1])-(?:0[1-9]|[1][0-2])-(?:\d{4})$/ 判断了日期为1-31 月份为1-12 年只判断了4位数字

JS代码使用 C#里面请去掉"/"
--------------------编程问答--------------------
引用 18 楼  的回复:
正则:

JScript code

1、
/^(?:[0-9]|[0][1-9]|[1-2]\d|3[0-1])-(?:[1-9]|0[1-9]|[1][0-2])-(?:\d{4})$/
判断了格式为dd-mm-yyyy、d-m-yyyy、dd-m-yyyy、d-mm-yyyy符合要求,这里面判断了日期为1-31 月份为1-12 年只判断了4位数字
2、如果楼主严格要求的格式为d……

楼上的还马马乎乎,多谢. --------------------编程问答-------------------- 额 第一个貌似有点小错误 日期可以为0 应该为

 /^(?:[1-9]|[0][1-9]|[1-2]\d|3[0-1])-(?:[1-9]|0[1-9]|[1][0-2])-(?:\d{4})$/
 还有貌似?:可以拿掉
--------------------编程问答-------------------- 最近在练习写正则 所以只要看到正则的帖子我就上来凑下热闹

--------------------编程问答--------------------
引用 16 楼  的回复:
好象不行,如:10-20-2012 日-月-年的格式不行.


20怎么可能是月? --------------------编程问答-------------------- 我们用的是asp.net的web开发,实验手册上的表达式是:(((0[1-9]|[12][0-9]|3[01])/((0[13578]|1[02]))|((0[1-9]|[12][0-9]|30)/(0[469]|11))|(0[1-9]|[1][0-9]|2[0-8])/(02))/([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}))|(29/02/(([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00)))
不知道对不对
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,