简言
在表单验证中,经常会用正则表达式做出生日期校验。本文把出生日期分割成几个部分,分步地介绍了实现一个出生日期校验的完整过程。相信您在理解了本篇的内容后,对如何编写和如何应用正则表达式会有进一步的理解和体会。
声明:本文目的是为了阐述如何编写一个正则表达式的过程。另本文所涉代码皆未经严格测试。
我们将一个形式如 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
根据以上规则,给出如下正则及简单测试: