验证时间的正则表达式

验证日期,时间,日期时间

        /// <summary>
        /// 是否为日期型字符串
        /// </summary>
        /// <param name="StrSource">日期字符串(2008-05-08)</param>
        /// <returns></returns>
        public static bool IsDate(string StrSource)
        {
            return Regex.IsMatch(StrSource, @"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-9]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$");
        }

        /// <summary>
        /// 是否为时间型字符串
        /// </summary>
        /// <param name="source">时间字符串(15:00:00)</param>
        /// <returns></returns>
        public static bool IsTime(string StrSource)
        {
            return Regex.IsMatch(StrSource, @"^((20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d)$");
        }

        /// <summary>
        /// 是否为日期+时间型字符串
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        public static bool IsDateTime(string StrSource)
        {
            return Regex.IsMatch(StrSource, @"^(((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d)$ ");
        } 

时间相关的正则表达式

    //是否是整数
    public static bool IsInt(string StrSource)
    {
        return Regex.IsMatch(StrSource, @"^[0-9]*$");
    }

yyyy/MM/dd格式

^(?<year>\\d{2,4})/(?<month>\\d{1,2})/(?<day>\\d{1,2})$

yyyy-MM-dd格式

^(?<year>\\d{2,4})-(?<month>\\d{1,2})-(?<day>\\d{1,2})$

yyyy.MM.dd 格式

^(?<year>\\d{2,4})[.](?<month>\\d{1,2})[.](?<day>\\d{1,2})$

yyyy年MM月dd日格式  (可以不包含年和日)

^((?<year>\\d{2,4})年)?(?<month>\\d{1,2})月((?<day>\\d{1,2})日)?$

yyyy年MM月dd日格式(MM、dd为中文数字)

^((?<year>\\d{2,4})年)?(正|一|二|三|四|五|六|七|八|九|十|十一|十二)月((一|二|三|四|五|六|七|八|九|十){1,3}日)?$

yyyy年MM月dd日格式(年月日均为中文数字)

^(零|〇|一|二|三|四|五|六|七|八|九|十){2,4}年((正|一|二|三|四|五|六|七|八|九|十|十一|十二)月((一|二|三|四|五|六|七|八|九|十){1,3}(日)?)?)?$

农历日期(年月日,可不包含日,匹配不含“初X”的日期)

^(甲|乙|丙|丁|戊|己|庚|辛|壬|癸)(子|丑|寅|卯|辰|巳|午|未|申|酉|戌|亥)年((正|一|二|三|四|五|六|七|八|九|十|十一|十二)月((一|二|三|四|五|六|七|八|九|十){1,3}(日)?)?)?$

农历日期(年月日,可不包含年,匹配“初X”类的日期)

^((甲|乙|丙|丁|戊|己|庚|辛|壬|癸)(子|丑|寅|卯|辰|巳|午|未|申|酉|戌|亥)年)?(正|一|二|三|四|五|六|七|八|九|十|十一|十二)月初(一|二|三|四|五|六|七|八|九|十)$

XX时XX分XX秒格式(可不含秒)

^(?<hour>\\d{1,2})(时|点)(?<minute>\\d{1,2})分((?<second>\\d{1,2})秒)?$

XX时XX分XX秒格式(中文数字,可不含秒)

^((零|一|二|三|四|五|六|七|八|九|十){1,3})(时|点)((零|一|二|三|四|五|六|七|八|九|十){1,3})分(((零|一|二|三|四|五|六|七|八|九|十){1,3})秒)?$

XX分XX秒格式(中文数字)

^((零|一|二|三|四|五|六|七|八|九|十){1,3})分((零|一|二|三|四|五|六|七|八|九|十){1,3})秒$

XX时格式

\\b(?<hour>\\d{1,2})(时|点钟)\\b

测试

    /// <summary>
    /// 使用正则表达式判断是否为日期
    /// </summary>
    /// <param name="str" type=string></param>
    /// <returns name="isDateTime" type=bool></returns>
    public bool IsDateTime(string str)
    {
        bool isDateTime = false;
        // yyyy/MM/dd
        if (Regex.IsMatch(str, "^(?<year>\\d{2,4})/(?<month>\\d{1,2})/(?<day>\\d{1,2})$"))
            isDateTime = true;
        // yyyy-MM-dd
        else if (Regex.IsMatch(str, "^(?<year>\\d{2,4})-(?<month>\\d{1,2})-(?<day>\\d{1,2})$"))
            isDateTime = true;
        // yyyy.MM.dd
        else if (Regex.IsMatch(str, "^(?<year>\\d{2,4})[.](?<month>\\d{1,2})[.](?<day>\\d{1,2})$"))
            isDateTime = true;
        // yyyy年MM月dd日
        else if (Regex.IsMatch(str, "^((?<year>\\d{2,4})年)?(?<month>\\d{1,2})月((?<day>\\d{1,2})日)?$"))
            isDateTime = true;
        // yyyy年MM月dd日
        else if (Regex.IsMatch(str, "^((?<year>\\d{2,4})年)?(正|一|二|三|四|五|六|七|八|九|十|十一|十二)月((一|二|三|四|五|六|七|八|九|十){1,3}日)?$"))
            isDateTime = true;  

        // yyyy年MM月dd日
        else if (Regex.IsMatch(str, "^(零|〇|一|二|三|四|五|六|七|八|九|十){2,4}年((正|一|二|三|四|五|六|七|八|九|十|十一|十二)月((一|二|三|四|五|六|七|八|九|十){1,3}(日)?)?)?$"))
            isDateTime = true;
        // yyyy年
        //else if (Regex.IsMatch(str, "^(?<year>\\d{2,4})年$"))
        //    isDateTime = true;  

        // 农历1
        else if (Regex.IsMatch(str, "^(甲|乙|丙|丁|戊|己|庚|辛|壬|癸)(子|丑|寅|卯|辰|巳|午|未|申|酉|戌|亥)年((正|一|二|三|四|五|六|七|八|九|十|十一|十二)月((一|二|三|四|五|六|七|八|九|十){1,3}(日)?)?)?$"))
            isDateTime = true;
        // 农历2
        else if (Regex.IsMatch(str, "^((甲|乙|丙|丁|戊|己|庚|辛|壬|癸)(子|丑|寅|卯|辰|巳|午|未|申|酉|戌|亥)年)?(正|一|二|三|四|五|六|七|八|九|十|十一|十二)月初(一|二|三|四|五|六|七|八|九|十)$"))
            isDateTime = true;  

        // XX时XX分XX秒
        else if (Regex.IsMatch(str, "^(?<hour>\\d{1,2})(时|点)(?<minute>\\d{1,2})分((?<second>\\d{1,2})秒)?$"))
            isDateTime = true;
        // XX时XX分XX秒
        else if (Regex.IsMatch(str, "^((零|一|二|三|四|五|六|七|八|九|十){1,3})(时|点)((零|一|二|三|四|五|六|七|八|九|十){1,3})分(((零|一|二|三|四|五|六|七|八|九|十){1,3})秒)?$"))
            isDateTime = true;
        // XX分XX秒
        else if (Regex.IsMatch(str, "^(?<minute>\\d{1,2})分(?<second>\\d{1,2})秒$"))
            isDateTime = true;
        // XX分XX秒
        else if (Regex.IsMatch(str, "^((零|一|二|三|四|五|六|七|八|九|十){1,3})分((零|一|二|三|四|五|六|七|八|九|十){1,3})秒$"))
            isDateTime = true;  

        // XX时
        else if (Regex.IsMatch(str, "\\b(?<hour>\\d{1,2})(时|点钟)\\b"))
            isDateTime = true;
        else
            isDateTime = false;  

        return isDateTime;
    }  

时间: 2024-12-11 21:58:08

验证时间的正则表达式的相关文章

验证日期的正则表达式比较全面地验证

原文:验证日期的正则表达式比较全面地验证 1.验证日期的正则表达式加入闰年的判断以及思路分析 进入正题之前,我们需要澄清两个概念: 一,什么是合法的日期范围?对于不同的应用场景,这个问题有不同的解释.这里采纳MSDN中的约定: DateTime 值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间. 二,关于闰年的阐释.人民教育出版社小学数学室的解释浅明易懂(media

表单验证常用的正则表达式

1.步骤: ①创建文档解析器的工厂对象 ②得到文档解析器对象 ③获取输入流对象 ④通过解析器的parse方法解析is对象 转换成Document对象 ⑤返回的是文档的根节点 ⑥判断是否有孩子节点进行获取子节点转换成元素节点得到属性节点 ⑦得到具体的某个属性节点 2.解析元素节点.属性节点.文本节点: 3.界面搭建 界面搭建的相关代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

验证QQ号码正则表达式

验证QQ号码正则表达式:下面分享一个非常简单的验证QQ号码的正则表达式.代码如下: [1-9][0-9]{4,} 原文地址是http://www.softwhy.com/forum.php?mod=viewthread&tid=18676 更多内容可以参阅http://www.softwhy.com/zhengze/

JavaScript验证邮箱的正则表达式

用JavaScript验证邮箱的正则表达式时,一般比较常用的是用以下两种: var pattern = /^([a-zA-Z0-9_-])[email protected]([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; var pattern = ^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$; 但是有时也会碰到像这种邮件:[email protected] 格式的邮件,这样便验证不了了.其实只要将第一个稍微改一下便可以了: va

js前端验证时间大小

replace(/\-/g, "\/")是根据验证表达式把日期转化成长日期格式 1 function checkStartTimeAndEndTime(startTime, endTime) { 2 var sTime = new Date(startTime.replace("/\-/g", "\/")); 3 var eTime = new Date(endTime.replace("/\-/g", "\/&qu

日期时间格式正则表达式

日期时间格式正则表达式 本文章已收录于: 正则表达式 (?n:^(?=\d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(?(.0?2)(?=.{3,4}(1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(16|[2468][048]|[3579][26])00))|0?[1-9]|1\d|2[0-8])(?<sep>[/.-])(?<month>0?[1-9]|1[012])\2(?

常见验证数字的正则表达式

jquery  代码如下 复制代码 intege:"^-?[1-9]//d*$", //整数 intege1:"^[1-9]//d*$", //正整数 intege2:"^-[1-9]//d*$", //负整数 num:"^([+-]?)//d*//.?//d+$", //数字 num1:"^([1-9]//d*|0)$", //正数(正整数 + 0) num2:"^-[1-9]//d*|0$&q

php读取excel时间42930转化为时间然后正则验证时间是否通过

excel时间 function exceltimtetophp($days,$time=false) { if(is_numeric($days)) { //凯撒日计数,要把我们运用的从1970年开始的日期运用函数GregorianToJD(),转换为凯撒日计数 $jd = GregorianToJD(1, 1, 1970);   $gregorian = JDToGregorian($jd+intval($days)-25569); $gregorian = strtotime($grego

日期和时间的正则表达式

//日期的正则表达式var reg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;var regExp = new RegExp(reg);if(!regExp.test(value)){ alert("日期格式不正确,正确格式为:2014-01-01"); return; } //时间的正则表达式var reg = /^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/;var re