正则表达式简单理解

372 阅读1分钟

摘抄笔记

常用匹配模式
  • ^:起始符号,^x表示以x开头
  • $:结束符号,x$表示以x结尾
  • [n-m]:表示从n到m的数字
  • \d:表示数字,等同于[0-9]
  • X{m}:表示由m个X字符构成
  • \d{4}:表示4位数字
例题

A选项:isIDCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/

C选项:isIDCard=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/\

15位身份证的构成:六位出生地区码+六位出身日期码+三位顺序码
18位身份证的构成:六位出生地区码+八位出生日期码+三位顺序码+一位校验码

C选项的构成
[1-9]\d{5}:六位出生地区码,出生地区码没有以0开头,因此第一位为[1-9]。
[1-9]\d{3}:八位出生日期码的四位年份,同样年份没有以0开头。
((0\d)|(1[0-2])):八位出生日期码的两位月份,| 表示或者,月份的形式为0\d或者是10、11、12。
(([0|1|2]\d)|3[0-1]):八位出生日期码的两位日期,日期由01至31。
\d{4}:三位顺序码+一位校验码,共四位。
A选项的构成
[1-9]\d{7}:六位出生地区码+两位出生日期码的年份,这里的年份指后两位,因此没有第一位不能为0的限制,所以合并了。后面的与C选项类似了

小试牛刀

如果要匹配0-100的数值的两位数:


let pattern = /^[1-9]\d/,
	str = '';
console.log(pattern.test(str));
工具

正则表达式在线测试