精华内容
下载资源
问答
  • 这个时候需要用到正则表达式,接下来,简单讲解我的验证实例,以验证时间格式2017-01-01格式为例: 1.首先,我们需要获得用户输入的内容; 2.其次,我们需要验证用户输入的内容是否为2017-01-01格式; 3.然后,验证...
  • 日期验证 正则表达式

    2021-02-12 02:58:56
    日期验证 正则表达式 1.验证日期的正则表达式加入闰年的判断以及思路分析 进入正题之前,我们需要澄清两个概念: 一,什么是合法的日期范围?对于不同的应用场景,这个问题有不同的解释。这里采纳MSDN中的约定: ...

    日期验证 正则表达式

    1.验证日期的正则表达式加入闰年的判断以及思路分析
    进入正题之前,我们需要澄清两个概念:

    一,什么是合法的日期范围?对于不同的应用场景,这个问题有不同的解释。这里采纳MSDN中的约定:

    DateTime 值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间。
    二,关于闰年的阐释。人民教育出版社小学数学室的解释浅明易懂(mediawiki等都没说明为什么整百年份必须是400的倍数时才是闰年):
    关于公历闰年是这样规定的:地球绕太阳公转一周叫做一回归年,一回归年长365日5时48分 46秒。因此,公历规定有平年和闰年,平年一年有365日,比回归年短0.2422日,四年共短0.9688日,故每四年增加一日,这一年有366日,就是闰年。但四年增加一日比四个回归年又多0.0312日,400年后将多3.12日,故在400年中少设3个闰年,也就是在400年中只设97个闰年,这样公历年的平均长度与回归年就相近似了。由此规定:年份是整百数的必须是400的倍数才是闰年,例如1900年、2100年就不是闰年。
    清楚了以上两个概念,我们进入正题。
    首先需要验证年份,显然,年份范围为 0001 - 9999,匹配YYYY的正则表达式为:

    [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-9] 也可以表示为 \d,但 \d 不如 [0-9] 直观,因此下面我将一直采用 [0-9]

    用正则表达式验证日期的难点有二:一是大小月份的天数不同,二是闰年的考虑。
    对于第一个难点,我们首先不考虑闰年,假设2月份都是28天,这样,月份和日期可以分成三种情况:

    1、月份为 1, 3, 5, 7, 8, 10, 12,天数范围为 01 - 31,匹配MM-DD的正则表达式为:

    (0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])
    

    2、月份为 4, 6, 9, 11,天数范围为 01-30,匹配MM-DD的正则表达式为:

    (0[469]|11)-(0[1-9]|[12][0-9]|30)
    

    3、月份为 2,考虑平年情况,匹配MM-DD的正则表达式为:

    02-(0[1-9]|[1][0-9]|2[0-8])
    

    根据上面的成果,我们可以得到匹配平年日期格式为YYYY-MM-DD的正则表达式:

    ([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])))
    

    接着我们来解决第二个难点:闰年的考虑。根据闰年的定义,我们可以将闰年分为两类:

    1、能被4整除但不能被100整除的年份。寻找后两位的变化规律,可以很快得到下面的正则匹配:

    ([0-9]{2})(0[48]|[2468][048]|[13579][26])
    

    2、能被400整除的年份。能被400整除的数肯定能被100整除,因此后两位肯定是00,我们只要保证前两位能被4整除即可,相应的正则表达式为:

    (0[48]|[2468][048]|[3579][26])00
    

    2.最强验证日期的正则表达式,添加了闰年的验证

    这个日期正则表达式支持
    YYYY-MM-DD
    YYYY/MM/DD
    YYYY_MM_DD
    YYYY.MM.DD的形式

    match : 2008-2-29 2008/02/29

    not match : 2008-2-30 2007-2-29

    完整的正则表达式如下:

    ((^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(10|12|0?[13578])([-\/\._])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(11|0?[469])([-\/\._])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(0?2)([-\/\._])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([3579][26]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][13579][26])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][13579][26])([-\/\._])(0?2)([-\/\._])(29)$))
    

    闰年的2月份有29天,因此匹配闰年日期格式为YYYY-MM-DD的正则表达式为:

    (([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29
    

    最后,将平年和闰年的日期验证表达式合并,我们得到最终的验证日期格式为YYYY-MM-DD的正则表达式为:

    (([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]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)
    

    DD/MM/YYYY格式的正则验证表达式为:

    (((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)))
    
    展开全文
  • 这次给大家带来js验证出生日期正则表达式,实现js验证出生日期正则表达式的注意事项有哪些,下面就是实战案例,一起来看一下。简言在表单验证中,经常会用正则表达式做出生日期校验。本文把出生日期分割成几个部分,...

    这次给大家带来js验证出生日期正则表达式,实现js验证出生日期正则表达式的注意事项有哪些,下面就是实战案例,一起来看一下。

    简言

    在表单验证中,经常会用正则表达式做出生日期校验。本文把出生日期分割成几个部分,分步地介绍了实现一个出生日期校验的完整过程。相信您在理解了本篇的内容后,对编写正则表达式会有更深入的理解和更强的信心。

    3f56ef103b8ced4a004d56dda97b9095.png

    我们将一个形式如 2018-06-15 的出生日期分割个年份,月份和日期三个组成部分,分别来编写相应的正则。

    1 年份正则

    首先给出年份正则表达式的规则定义:年份由4位数字组成

    只接受19,20开头的年份

    根据以上规则,很容易写出年份的正则表达式:var pattern = /^(19|20)\d{2}$/;

    //输出 true

    console.log(pattern.test("2008"));

    其中/ /两个斜杠及其中间的字符是正则表达式直接量的定义;^表示匹配字符串的开头,$表示匹配字符串的结尾;^(19|20)表示匹配以19或20开头的字符串,一对小括号作用是将几项组合为一个单元;而\d{2}表示匹配任意ASCII数字2次,\d等价于[0-9],而{2}则表示匹配前一项2次。

    上述正则表达式可以匹配1900至2099这些年份,如果想限制年份的范围,增加规则如下:年份起始于1920年

    年份终止于2018年

    根据以上规则,变更正则表达式如下:var pattern = /^(19[2-9]\d{1})|(20((0[0-9])|(1[0-8])))$/;

    //输出 false

    console.log(pattern.test("1916"));

    //输出 true

    console.log(pattern.test("2008"));

    //输出 false

    console.log(pattern.test("2022"));

    2 月份正则

    首先给出月份正则表达式的规则定义:月份可以是1-12

    月份如果是1-9,则前面可加0

    根据以上规则,给出如下正则及简单测试:var pattern = /^((0?[1-9])|(1[0-2]))$/;

    //输出 false

    console.log(pattern.test("19"));

    //输出 true

    console.log(pattern.test("02"));

    //输出 true

    console.log(pattern.test("2"));

    //输出 true

    console.log(pattern.test("11"));

    3 日期正则

    首先给出日期正则表达式的规则定义:日期可以是1-31

    如果日期是1-9,则前面可加0

    根据以上规则,给出如下正则及简单测试:var pattern = /^((0?[1-9])|([1-2][0-9])|30|31)$/;

    //输出 false

    console.log(pattern.test("32"));

    //输出 true

    console.log(pattern.test("02"));

    //输出 true

    console.log(pattern.test("2"));

    4 组合校验

    根据上述的年份正则,月份正则,日期正则组合形成出生日期的正则表达式:var pattern = /^((19[2-9]\d{1})|(20((0[0-9])|(1[0-8]))))\-((0?[1-9])|(1[0-2]))\-((0?[1-9])|([1-2][0-9])|30|31)$/;

    //输出 true

    console.log(pattern.test("1923-3-18"));

    //输出 true

    console.log(pattern.test("1923-4-31"));

    //输出 true

    console.log(pattern.test("1923-2-29"));

    //输出 true

    console.log(pattern.test("2016-2-29"));

    从以上测试结果可以看出,上述正则验证还不完善,主要是2,4,6,9,11月份的天数问题。

    5 完善

    根据第4步的问题,增加限定规则如下:4,6,9,11月没有31日

    2月平年是28天

    2月闰年是29天

    平年闰年判定:

    能被4整除的年份是闰年,不能被4整除的年份是平年。但是如果是整百年,就只有能被400整除才是闰年,否则就是平年。

    根据新增规则及说明,给出下面正则函数及测试:var checkBirth = function (val) {

    var pattern = /^((?:19[2-9]\d{1})|(?:20(?:(?:0[0-9])|(?:1[0-8]))))\-((?:0?[1-9])|(?:1[0-2]))\-((?:0?[1-9])|(?:[1-2][0-9])|30|31)$/;

    var result = val.match(pattern);

    if(result != null) {

    var iYear = parseInt(result[1]);

    var month = result[2];

    var date = result[3];

    if(/^((0?[469])|11)$/.test(month) && date == '31') {

    return false;

    } else if(parseInt(month) == 2){

    if((iYear % 4 ==0 && iYear % 100 != 0) || (iYear % 400 == 0)) {

    if(date == '29') {

    return true;

    }

    }

    if(parseInt(date) > 28) {

    return false;

    }

    }

    return true;

    }

    return false;

    }

    //输出 true

    console.log(checkBirth("1923-3-18"));

    //输出 false 4月份没有31日

    console.log(checkBirth("1923-4-31"));

    //输出 false 平年

    console.log(checkBirth("1923-2-29"));

    //输出 true 闰年

    console.log(checkBirth("2016-2-29"));

    上述正则表达式中利用了String的match()方法,该方法唯一参数是一个正则表达式,返回的是一个由匹配结果组成的数组。数组的第一个元素就是匹配的字符串,余下的元素则是正则表达式中用圆括号括起来的子表达式。而(:?...)这种形式多次出现,该种方式表示只是把项组合到一个单元,但不记忆与该组相匹配的字符。利用该种方法按照正则匹配的顺序分别取出了年月日项,以便后序比较。

    根据上述分析与测试,我们不但实现了年月日的正则的一般判定,还实现了日期范围及2,4,6,9,11月等特殊月份天数的处理,测验结果达到了我们设定的目标。

    根据上述讲解和分析,我们可以调整相应的限定规则,使其满足于特定场景下的项目需要。

    延伸

    根据 V2EX网友 xiangyuecn 的意见,上述checkBirth的逻辑代码太多,确实有点 low。现将上述代码更新如下:var checkBirth = function (val) {

    var pattern = /^((19[2-9]\d{1})|(20((0[0-9])|(1[0-8]))))\-((0?[1-9])|(1[0-2]))\-((0?[1-9])|([1-2][0-9])|30|31)$/;

    if(pattern.test(val)) {

    var date = new Date(val);

    var month = val.substring(val.indexOf("-")+1,val.lastIndexOf("-"));

    return date && (date.getMonth()+1 == parseInt(month));

    }

    return false;

    }

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    展开全文
  • 1、表单验证的场景与意义 1.1、降低服务器压力 拦截不合格数据,避免直接提交到服务器,可以显著降低服务器开销 1.2、提升用户体验 早期的互联网,表单项非常多,注册账号需要填写20+字段。而其中有一个填写不...

    1、表单验证的场景与意义

    1.1、降低服务器压力

    拦截不合格数据,避免直接提交到服务器,可以显著降低服务器开销

    1.2、提升用户体验

    早期的互联网,表单项非常多,注册账号需要填写20+字段。而其中有一个填写不正确就需要等待几十秒。如果有了表单验证,反馈是实时的,而且脚本还能把你定位到填写错误的具体字段。现在虽然无刷新技术早已普及,但是只依赖服务端进行验证,还是会有几百毫秒的延迟,实际使用时会有一种很严重的粘滞感。

    2、表单验证常用事件与属性

    表单经常要做一些非空、长度、合法性验证。

    <head>
    <meta charset="UTF-8">
    <title>表单验证</title>
    <script>
        function validateName(){
            //所有的表单项元素都是value属性
            var name=document.getElementById("userName").value;
            var msg=document.getElementById("nameMsg");
            if(name==null||name==""){
            	msg.innerHTML="用户名不能为空!";
            	msg.style.color="red";
            	return false;
            }else if(name.length<6){
            	msg.innerHTML="用户名长度必须为大于6的!";
            	msg.style.color="red";
            	return false;
            }
            msg.innerHTML="用户名可用";
            msg.style.color="green";
            return true;
        }
    
        function validatePwd(){
            var password1=document.getElementById("password1").value;
            var msg=document.getElementById("pwdMsg1");
            if(password1==null||password1==""){
            	msg.innerHTML="密码不能为空!";
            	msg.style.color="red";
            	return false;	
            }else if(password1.length<8){
            	msg.innerHTML="密码长度必须大于等于8";
            	msg.style.color="red";
            	return false;
            }
            msg.innerHTML="密码合法";
            msg.style.color="green";
            return true;
        }
        function confirmPwd(){
            var pwd1=document.getElementById("password1").value;
            var pwd2=document.getElementById("password2").value;
            var msg=document.getElementById("pwdMsg2");
            if(pwd1!=pwd2){
            	msg.innerHTML="两次输入的密码不一致!";
            	msg.style.color="red";
            	return false;
            }
            msg.innerHTML="两次输入的密码一致";
            msg.style.color="green";
            return true;
        }
        function validateGender(){
            var gender=document.getElementById("gender").value;
            if(gender==-1){
            	alert("性别为必选项!");
            	return false;
            }
            return true;
        }
        function register(){
            return validateName()&&validatePwd()&&confirmPwd()&&validateGender();
        }
    </script>
    </head>
    <body>
    <h1>英雄会</h1>
    <form action="1.html" method="get" onsubmit="return register()">
    *用户名:<input type="text" id="userName" placeholder="请输入用户名" onblur="validateName()" />
    <span id="nameMsg">用户名长度至少6位</span><br/>
    *密码:<input type="password" id="password1" placeholder="请输入密码" onblur="validatePwd()" />
    <span id="pwdMsg1">密码长度至少8位</span><br/>
    *确认密码:<input type="password" id="password2" placeholder="请确认密码" onblur="confirmPwd()" />
    <span id="pwdMsg2">确认密码与密码一致</span><br/>
    *性别:<select id="gender">
    <option value="-1">请选择性别</option>
    <option value="0">女</option>
    <option value="1">男</option>
    </select><br/>
    <button type="submit">注册</button>
    <button type="reset">重置</button>
    </form>
    </body>

    3、JavaScript的RegExp对象-正则表达式

    3.1、概念

    RegExp:正则表达式(regular expression)的简写

    正则表达式(英语:Regular Expression,代码中常常简写为regex、regexp或RE)使用单个字符串来描述、匹配符合某个句法规则的字符串搜索模式。搜索模式可用于文本搜索和文本替换。

    3.2、语法

    var reg=new RegExp(/正则表达式主体/,修饰符(可选));
    或者更简单的方法
    var reg=/正则表达式主体/修饰符(可选);
    
    案例:
    var reg=new RegExp(/kaikeba/i);
    var reg=/kaikeba/i;//此处定义了一个一个正则表达式
    kaikeba 是一个正则表达式主体(用于检索)
    i 是一个修饰符(搜索不区分大小写)

    3.3 修饰符

    可以在全局搜索中不区分大小写

    修饰符

    描述

    i

    执行对大小写不敏感的匹配

    g

    执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)

    m

    执行多行匹配

    3.4 正则表达式模式

    方括号用于查找某个范围内字符。

    表达式

    描述

    [a-z]

    查找方括号之间的任何字符

    [0-9]

    查找任何0-9之间的数字

    (x|y)

    查找任何以|分隔的选项

    元字符是拥有特殊含义的字符

    元字符

    描述

    \d

    查找数字

    \s

    查找空白字符

    \b

    匹配单词边界

    \uxxx

    查找以十六进制数XXX规定的unicode字符

    量词:

    量词

    描述

    n+

    匹配任何包含至少一个n的字符串。

    n*

    匹配任何包含0个或者多个n的字符串。

    n?

    匹配任何包含0个或者一个n的字符串。

    3.5 正则表达式的方法test(str)

    test()用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配文本,则返回true,否则返回false。

    var reg=/kaikeba/i;
    var res=reg.test("开课吧的汉语拼音为kaikeba");
    console.log(res);//true
    
    var reg=/^[a-zA-Z]+[\u4e00-\u9fa5]*[0-9]$/;
    var str="a公司拼音为9";
    var res=reg.test(str);
    console.log(res);//true
    console.log(reg.test("a你好239"));//false

    4、 常用正则表达式

    /* 检查输入的身份证号是否正确  */
    function checkCard(str){
        /**
         * 15位数身份证正则表达式:
         * 编码规则顺序从左至右依次为6位数字地址码,6位数字出生年份后两位及日期,3为数字顺序码。
         * [1-9]\d{5}   前六位地区,非0打头
         * \d{2}        出生年份后两位00-99
         * ((0[1-9])|(10|11|12))   月份,01-12月
         * (([0-2][1-9])|10|20|30|31) 日期,01-31天
         * \d{3}    顺序码三位,没有校验码
         */
        if(str==null||(str.length!=15&&str.length!=18)){
        	return false;
        }
        var arg1=/^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$/;
        if(str.length==15&&!arg1.test(str)){
        	return false;
        }
        /**
         * 18位数身份证正则表达式:
         * 编码规则顺序从左至右依次为6位数字地址码,8位数字出生年份日期码,3位数字顺序码,1位数字校验码(可为X)。
         * [1-9]\d{5}   前六位地区,非0打头
         * (18|19|([23]\d))\d{2}   出生年份,覆盖范围1800-3999年
         * ((0[1-9])|(10|11|12))   月份,01-12月
         * (([0-2][1-9])|10|20|30|31)  日期,01-31天
         * \d{3}[0-9Xx]           顺序码三位+一位校验码
         */
        var arg2=/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
        if(str.length==18 && !arg2.test(str)){
        	return false;
        }
        return true;
    }
    /*是否是小数*/
    function isDecimal(strValue){
        var objRegExp=/^\d+\.\d+$/;
        return objRegExp.test(strValue);
    }
    /*校验是否中文名称组成*/
    function ischina(str){
        var reg=/^[\u4E00-\u9FA5]{2,4}$/;
        return reg.test(str);
    }
    /*检验是否全由8位数字组成*/
    function isNum(str){
        var reg=/^[0-9]{8}$/;
        return reg.test(str);
    }
    /*校验手机号*/
    function isPhoneNum(str){
        //如果你要精准验证手机号码,那个你可以使用第一个正则。这是根据电信,移动,联通目前发行的号码来的,验证比较精准。
        var reg=/^1[3|4|5|7|8][0-9]{9}$/;
        //如果因为现有号码不能满足市场需求,电信服务商会增大号码范围。所以一般情况下我们只要验证手机号码为11为并且以1开头。
        var reg=/^1[0-9]{10}$/;
        return reg.test(str);
    }
    /*检验右键地址是否合法*/
    function IsEmail(str){
        var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
        return reg.test(str);
    }
    /*检查输入的URL地址是否正确*/
    function checkURL(str){
        if(str.match(/http(s)?:\/\/[\w.]+[\w\/]*[\w.]*\??[\w=&\+\%]*/i)==null){
        	return false;
        }else{
        	return true;
        }
    }

    展开全文
  • 摘要 腾兴网为您分享:常用的日期时间正则表达式,掌上看家,学宝,水印相机,手柄助手等软件知识,以及手机录音剪辑软件,中国北斗卫星导航系统,自动刷新网页工具,盆景艺术在线,风控在线,叮当客,qbasic,众智...

    摘要 腾兴网为您分享:常用的日期时间正则表达式,掌上看家,学宝,水印相机,手柄助手等软件知识,以及手机录音剪辑软件,中国北斗卫星导航系统,自动刷新网页工具,盆景艺术在线,风控在线,叮当客,qbasic,众智规范标准,备份英语,北大课程网,糖果云,广告文案范文,创造历史2世界大战,波兰地图,怪物猎人世界惨爪龙套等软件it资讯,欢迎关注腾兴网。常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?day31(?!(.0?[2469]|11))|30(?!.0?2)|29(?(.0?2)(?=.{3,4}(1[6-9]|[2-9]d)(0[48...

    常用的日期时间正则表达式

    下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。

    正则表达式 (?n:^(?=d)((?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]|1d|2[0-8])(?[/.-])(?0?[1-9]|1[012])2(?(1[6-9]|[2-9]d)d{2})(?:(?=x20d)x20|$))?(?((0?[1-9]|1[012])(:[0-5]d){0,2}(?i: [AP]M))|([01]d|2[0-3])(:[0-5]d){1,2})?$)

    匹配 31/12/2003 | 29/2/2004 4:50 PM | 23:59:59

    不匹配 12/31/2003 | 29/2/2003 | 4:00

    正则表达式 ^(?:(?:31(/|-|.)(?:0?[13578]|1[02]))1|(?:(?:29|30)(/|-|.)(?:0?[1,3-9]|1[0-2])2))(?:(?:1[6-9]|[2-9]d)?d{2})$|^(?:29(/|-|.)0?23(?:(?:(?:1[6-9]|[2-9]d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1d|2[0-8])(/|-|.)(?:(?:0?[1-9])|(?:1[0-2]))4(?:(?:1[6-9]|[2-9]d)?d{2})$

    匹配 29/02/1972 | 5-9-98 | 10-11-2002

    不匹配 29/02/2003 | 12/13/2002 | 1-1-1500

    正则表达式 ^(?:(((Jan(uary)?|Ma(r(ch)?|y)|Jul(y)?|Aug(ust)?|Oct(ober)?|Dec(ember)?) 31)|((Jan(uary)?|Ma(r(ch)?|y)|Apr(il)?|Ju((ly?)|(ne?))|Aug(ust)?|Oct(ober)?|(Sept|Nov|Dec)(ember)?) (0?[1-9]|([12]d)|30))|(Feb(ruary)? (0?[1-9]|1d|2[0-8]|(29(?=, ((1[6-9]|[2-9]d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))))), ((1[6-9]|[2-9]d)d{2}))

    匹配 Jan 1, 2003 | February 29, 2004 | November 02, 3202

    不匹配 Feb 29, 2003 | Apr 31, 1978 | jan 33,3333

    正则表达式 ^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$

    匹配 12:15 | 10:26:59 | 22:01:15

    不匹配 24:10:25 | 13:2:60

    正则表达式 (?=d)^(?:(?!(?:10D(?:0?[5-9]|1[0-4])D(?:1582))|(?:0?9D(?:0?[3-9]|1[0-3])D(?:1752)))((?:0?[13578]|1[02])|(?:0?[469]|11)(?!/31)(?!-31)(?!.31)|(?:0?2(?=.?(?:(?:29.(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:dd)(?:[02468][048]|[13579][26])(?!x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)x20BC))))))|(?:0?2(?=.(?:(?:dD)|(?:[01]d)|(?:2[0-8])))))([-./])(0?[1-9]|[12]d|3[01])2(?!0000)((?=(?:00(?:4[0-5]|[0-3]?d)x20BC)|(?:d{4}(?!x20BC)))d{4}(?:x20BC)?)(?:$|(?=x20d)x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]d){0,2}(?:x20[aApP][mM]))|(?:[01]d|2[0-3])(?::[0-5]d){1,2})?$

    匹配 11/24/0004 11:59 PM | 2.29.2008 | 02:50:10

    不匹配 12/33/1020 | 2/29/2005 | 13:00 AM

    正则表达式 ^([0]?[1-9]|[1|2][0-9]|[3][0|1])[./-]([0]?[1-9]|[1][0-2])[./-]([0-9]{4}|[0-9]{2})$

    匹配 10/03/1979 | 1-1-02 | 01.1.2003

    不匹配 10/03/197 | 09--02--2004 | 01 02 03

    正则表达式 ^((0?[13578]|10|12)(-|/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[01]?))(-|/)((19)([2-9])(d{1})|(20)([01])(d{1})|([8901])(d{1}))|(0?[2469]|11)(-|/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[0]?))(-|/)((19)([2-9])(d{1})|(20)([01])(d{1})|([8901])(d{1})))$

    匹配 1/2/03 | 02/30/1999 | 3/04/00

    不匹配 3/4/2020 | 3/4/1919 | 4/31/2000

    正则表达式 ^([2-9]d{3}((0[1-9]|1[012])(0[1-9]|1d|2[0-8])|(0[13456789]|1[012])(29|30)|(0[13578]|1[02])31)|(([2-9]d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00))0229)$

    匹配 20000101 | 20051231 | 20040229

    不匹配 19990101 | 20053112 | 20050229

    正则表达式 ^([1-9]|1[0-2]|0[1-9]){1}(:[0-5][0-9][aApP][mM]){1}$

    匹配 08:00AM | 10:00am | 7:00pm

    不匹配 13:00pm | 12:65am

    正则表达式 ^(([1-9])|(0[1-9])|(1[0-2]))/(([0-9])|([0-2][0-9])|(3[0-1]))/(([0-9][0-9])|([1-2][0,9][0-9][0-9]))$

    匹配 01/01/2001 | 1/1/1999 | 10/20/2080

    不匹配 13/01/2001 | 1/1/1800 | 10/32/2080

    正则表达式 ^d{1,2}/d{1,2}/d{4}$

    匹配 4/1/2001 | 12/12/2001 | 55/5/3434

    不匹配 1/1/01 | 12 Jan 01 | 1-1-2001

    正则表达式 (d{2}|d{4})(?:-)?([0]{1}d{1}|[1]{1}[0-2]{1})(?:-)?([0-2]{1}d{1}|[3]{1}[0-1]{1})(?:s)?([0-1]{1}d{1}|[2]{1}[0-3]{1})(?::)?([0-5]{1}d{1})(?::)?([0-5]{1}d{1})

    匹配 00-00-00 00:00:00 | 0000-00-00 00:00:00 | 09-05-22 08:16:00 | 1970-00-00 00:00:00 | 20090522081600

    不匹配 2009-13:01 00:00:00 | 2009-12-32 00:00:00 | 2002-12-31 24:00:00 | 2002-12-31 23:60:00 | 02-12-31 23:00:60

    正则表达式 ^(?=d)(?:(?!(?:1582(?:.|-|/)10(?:.|-|/)(?:0?[5-9]|1[0-4]))|(?:1752(?:.|-|/)0?9(?:.|-|/)(?:0?[3-9]|1[0-3])))(?=(?:(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:dd)(?:[02468][048]|[13579][26]))D0?2D29)|(?:d{4}D(?!(?:0?[2469]|11)D31)(?!0?2(?:.|-|/)(?:29|30))))(d{4})([-/.])(0?d|1[012])2((?!00)[012]?d|3[01])(?:$|(?=x20d)x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]d){0,2}(?:x20[aApP][mM]))|(?:[01]d|2[0-3])(?::[0-5]d){1,2})?$

    匹配 0008-02-29 | 2:34:59 PM | 9999/12/31 11:59 PM

    不匹配 04/04/04 | 1:00 | 1999/1/32

    正则表达式 ^(([1-9]{1})|([0-1][0-9])|([1-2][0-3])):([0-5][0-9])$

    匹配 00:00 | 23:59 | 10:10

    不匹配 24:00 | 00:60 | 25:61

    正则表达式 ^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))$

    匹配 2004-04-30 | 2004-02-29

    不匹配 2004-04-31 | 2004-02-30

    相关推荐

    展开全文
  • 13:js验证时间正则表达式 验证时间格式为:2012-01-31 09:00:22 var reDateTime = /^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])...
  • 通过正则表达式的使用,判断用户注册信息中的邮箱、电话、密码信息是否符合要求。
  • 日期验证正则表达式

    2021-03-23 19:57:57
    日期验证正则表达式日期验证正则表达式下面提供了三款日期验证正则表达式哦,你可以根据自己的需选择下面三种中期其中一种日期验证方法日期验证正则表达式下面提供了三款日期验证正则表达式哦,你可以根据自己的需...
  • 验证日期正则表达式

    千次阅读 2018-09-03 16:07:47
    首先需要验证年份,显然,年份范围为 0001 - 9999,匹配YYYY的正则表达式为: [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-9] 也可以表示为 \d,但 \d 不如 [0-9] 直观...
  • 正则表达式匹配年份

    千次阅读 2021-03-10 01:14:33
    这里有一些非常有用的代码,我认为我可能会尝试学习并适应我的目的,我试图在电子表格上匹配一个代表一年的4位数字符串,即 . “ 2016 was a good year " would yield " 2016 ” .我在那里发布的问题中使用了一些...
  • 我登陆这里是因为这个问题的标题很宽泛,我一直...在探索问题时,我想出了一个系统,使您可以通过将四个在分隔符上匹配的更简单的子表达式以及顺序中的年,月和日字段的有效范围排列在一起,来构建正则表达式 您需要...
  • 正则表达式科学计数法As data scientists, diving headlong into huge heaps of data is part of the mission. Sometimes, this includes massive corpuses of text. For instance, suppose we were asked to figure...
  • jsp验证正则表达式

    2018-11-22 21:49:00
    jsp验证正则表达式 下面都是我收集的一些比较常用的正则表达式,因为平常可能在表单验证的时候,用到的比较多。特发出来,让各位朋友共同使用。呵呵。 匹配中文字符的正则表达式: [u4e00-u9fa5]评注:匹配中文...
  • 今天我们通过实现用户注册页面验证来学习js当中的正则表达式的构造1.题目:正则表达式实现用户注册页面验证 。在各文本框中输入信息,在文本框失去焦点时,验证信息,如果输入的信息部满足要求,则提示信息输入有误...
  • JS怎么用正则表达式判断输入的日期格式为 yyyy-mm-dd请大家把具体代码发布一下 ...js 写 验证日期正则表达式按照 这样的验证格式写 年-月-日 例如 1987-09-01 js里正则表达式怎么写如果单纯用正则的话,去掉第一个/...
  • 正则表达式校验年份

    万次阅读 2019-01-10 16:43:20
    首先需要验证年份,显然,年份范围为 0001 - 9999,匹配YYYY的正则表达式为: [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-9] 也可以表示为 \d,但 \d 不如 [0-9] 直观,因此...
  • Java正则表达式

    2021-02-12 12:18:08
    正则表达式可以用字符串来描述规则,并用来匹配字符串一个正则表达式就是一个描述规则的字符串只需要编写正确的规则,就可以让正则表达式引擎去判断目标字符串是否符合规则正则表达式是一套标准,可以用于任何语言...
  • package org.mike.test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test {public static void main(String[] args) {//Pattern pattern = Pattern.compile("\\d\\d\\d\\d-\\d\\d-...
  • JS怎么用正则表达式判断输入的日期格式为 yyyy-mm-dd请大家把具体代码发布一下 ...js 写 验证日期正则表达式按照 这样的验证格式写 年-月-日 例如 1987-09-01 js里正则表达式怎么写如果单纯用正则的话,去掉第一个/...
  • php 日期正则表达式

    2021-03-23 18:10:58
    $pattenone=array(‘Y-n-j’=>”/\d{4}-\d{1}-\d{1}/”,‘Y-m-d’=>’/\d{4}-\d{2}-\d{2}/’,‘Y/n/j’=>”/\d{4}\/\d{1}\/\d{1}/”,‘Y/m/d’=>’/\d{4}\/\d{2}\/\d{2}/’,‘Y年n月j日’=>...
  • 语法DATE_SUB(date,INTERVAL expr type)date参数是合法的日期表达式。expr参数是您希望添加的时间间隔。type 参数可以是下列值:Type 值MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_...
  • Java日期的正则表达式

    2021-02-12 13:04:33
    关键字: 正则表达式一、简单的日期判断(YYYY/MM/DD):^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$二、演化的日期判断(YYYY/MM/DD| YY/MM/DD):^(^(\d{4}|\d{2})(\-|\/|\.)\d{1,2}\3\d{1,2}$)|(^\d{4}年\d{1,2}月\d{1,2}日$)$...
  • 考虑到这个正则表达式仅仅是用作验证,所以捕获组没有意义,只会占用资源,影响匹配效率,所以可以使用非捕获组来进行优化。 ^(?:(?!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...
  • 文章目录JS正则表达式 匹配与搜索一、方括号,圆括号二、修饰符三、元字符四、量词2.读入数据总结 JS正则表达式 匹配与搜索 使用正则的查找替换 regexp()返回相匹配的子串的起始位置,没有相匹配的则返回-1 ...
  • 正则表达式校验日期时间格式

    千次阅读 2020-12-18 09:30:04
    ((\d{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229 最终,验证YYYYMMDD的正则表达式为 ((\d{3}[1-9]|\d{2}[1-9]\d|\d[1-9]\d{2}|[1-9]\d{3})(((0[13578]|1[02])(0[1-9]|[12]\d|3[01...
  • Swift和正则表达式:Swift

    千次阅读 2020-06-11 21:44:10
    在本系列的第一个教程中,我们探讨了正则表达式的基础知识,包括编写正则表达式的语法。 在本教程中,我们将运用到目前为止所学的知识来利用Swift中的正则表达式。 1. Swift中的正则表达式 打开Xcode,创建一个...
  • 正则表达式匹配二代身份证号

    千次阅读 2020-08-17 16:23:01
    )(0[1-9]|[12][0-9]|3[01]) 年份范围:1800~2099 月份范围:01~12 日范围:01~31 4、顺序码(三位):\d{3} 三位任意数字 5、校验码(一位):[0-9xX] 任意数字或x或X 所以最终的正则表达式为: ^[1-9]\d{5}(18|19|...
  • 正则表达式对qq号码校验废话不多说了,直接给大家贴代码了,具体代码如下所示:package 正则表达式;/*对QQ号码进行校验要求5~15位,不能以0开头,只能是数字*/import java.util.regex.Matcher;import java.util....
  • 正则表达式提取文本中的日期

    千次阅读 2021-02-21 15:33:46
    在美国,2017 年圣诞节的表示是“12/25/17”,而在欧洲,同一个日子却表示为“25/12/17”...# 美国日期的正则表达式 us = r'((([01]?\d)[-/]([0123]?\d))([-/]([0123]\d)\d\d)?)' mdy = re.findall(us, 'Santa came 12/

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,553
精华内容 2,221
关键字:

验证年份的正则表达式