正则表达式如下:System.Text.RegularExpressions.Regex gex=new System.Text.RegularExpressions.Regex("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-9]))\\:([0-5]?[0-9])))?$");比较多,这个是包含了闰年平年验证的..现在的问题就是([1-2][0-4]))\\:([0-5]?[0-9])))?$");最后一句.这里是验证时间.但是如果输入15-19的时间都会报错.请问改怎么改啊?

解决方案 »

  1.   

    你这个正则太累啦给你一个我们项目里用的JS方法:
    前提是你先对格式CHECK好,function dateCheck(day, Month, Year) {
        var intday = parseInt(day, 10);
        var intMonth = parseInt(Month, 10);
        var intYear = parseInt(Year, 10);
        if (intMonth == 0 || intday == 0) {
            return false;
        }
        if (intYear < 2100 && intYear > 1900) {
            if (intMonth < 13) {
                if (intMonth == 2) {
                    if ((intYear % 4) == 0 && intday < 30 || (intYear % 4) != 0 && intday < 29) {
                        return true;
                    }
                } else {
                    if (intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) {
                        if (intday < 31) {
                            return true;
                        }
                    } else {
                        if (intday < 32) {
                            return true;
                        }
                    }
                }
            }
        }
        return false;
    }
      

  2.   

    try...^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)\s+([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$参考
    正则应用之——日期正则表达式
      

  3.   

    问题解决了..System.Text.RegularExpressions.Regex gex=new System.Text.RegularExpressions.Regex("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-9]))\\:([0-5]?[0-9])))?$");把最后改成([01][0-9]|[02][0-3]))\\:([0-5]?[0-9])))?$");这样就可以了..谢谢大家了.