js或jquery里验证时间日期的正则表达式(手把手教你如何自己动手写)推荐 原创

文章标签: 正则
  • :
  • 04-01 14:58
  • :
  • 18次
  • :
  • 0条
  • 0赞

简介本文非常详细的解释如何动手自己写出验证日期和时间的正则表达式。

本文站长通过“验证日期和时间的正则”这个实例,来学习在js或jquery里正则的使用,保证通过本文能让你学会自己动手写出自己所需要的验证日期或时间的正则表达式。

先从最简单的开始,我们要验证 “2019-04-01”:

1.比较简单的写法:

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

^ 这个符号表示“开头”;
$ 这个符号表示“结尾”;
\d 表示数字,等于[0-9];
\d{4}表示四位数字;

这是最简单的写法,相信你很容易就能写出来。

2.比较严格的写法:

    1》:年分:四位数字,第一位一般为1或2,所以我们可以这样写:[1-2]\d{3};

    2》:月 :可以为一位数字,也可以为两位数字,并且不能是“00”,也不能大于12,也就是说,当第一位为0的时候,第二位的范围是1-9,不包含0;当第一位是1的时候,第二位的范围是0-2,即0、1、2,结合起来就是:

0[1-9]|1[0-2];

| : 这个竖线的符号在正则里就是“或”的意思;

上面的正则匹配的就是01-12的范围,但少了一种情况,就是也可以是一位,我们可以这样写:

[1-9]|0[1-9]|1[0-2];

上面这样的写法是没问题的,就是不太“高级”,其实可以写成这样:

0?[1-9]|1[0-2];

? : 问号在正则里的意思就是“0或1”的意思;

    3》:日 :取值范围为:1-9 、01-09 、10-31 ,前两个和上面的月分一样,主要看10-31这个范围如何用正则来表达:

[1-2][0-9]|3[0-1]  //当第一位为1-2时,第二位的范围是0-9 ,第一位等于3时,第二位的范围是0-1

//所以结合起来就是:
0?[1-9]|[1-2][0-9]|3[0-1]

年月日我们都分析完了,我们就可以把结合到一起了:

[1-2]\d{3}\-(0?[1-9]|1[0-2])\-(0?[1-9]|[1-2][0-9]|3[0-1])

加上小括号是为了指定"|"这个符号的范围,- 这个符号在正则里有特殊含义,所以要加上\来转义。

最后一定要加上表示开头和结尾的符号,不然,比如我们在验证“2019-4-36”时,也会返回true,因为上面的正则验证的时候只验证到了3,后面的六没有验证,所以要在上面的正则加上开头和结尾的符号:

^[1-2]\d{3}\-(0?[1-9]|1[0-2])\-(0?[1-9]|[1-2][0-9]|3[0-1])$

一个完整的实例:

var str="2019-3-39";
var reg=/^[1-2]\d{3}\-(0?[1-9]|1[0-2])\-(0?[1-9]|[1-2][0-9]|3[0-1])$/gi;
console.log(reg.test(str));


您正在找的文章可能是: