1. 什么是正则表达式?
英文: regular express 可以理解为有规律的表达式, 正则表达式本质就是我们要在字符串中找到符合我们规则的部分,抽象出来就是规律。
2. 概念
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
概念重点:字符串匹配,含有,替换,提取
学好正则先从认识字符开始
其实正则表达式就是在字符串添加一些我们不熟悉,或者需要花时间才能熟悉的字符。
- 普通字符
- 非打印字符
- 特殊字符
- 限定符
- 定位符
- 选择符
- 反向引用符
- 元字符
字符串匹配优先级
字符串匹配优先级
匹配规则
1. 匹配开始与结束 定位符
// 以 a 开始
var startReg = /^a/;
// 以 a 结束
var endReg = /a$/;


2. 组合匹配
使用()表示一个组合,正确的理解是,这个子匹配项
var testCom = /(abc)(def)(hig)/

3. 匹配次数
在正则中标准叫法: 限定符
匹配次数的写法与集合的书写方式类似,使用 {}来表示
- {0,} 匹配次数 >= 0, 简单的写法:
*

- {1,} 匹配次数 >= 1, 简单的写法:
+

- {0, 1} 匹配次数 >= 0 && <= 1, 简单的写法:
?

() 和 []
- () 表示子正则(子组合)表示式开始和结束的位置
// 使用()和没有使用组的区别
var userCom = /onezoo{1,10}/;
var unUserCom = /one(zoo){1,10}/


- [] 中括号表示组合中的一个被匹配到
// 匹配其中之一
var test01 = /[abc012]/
var test01_02 = /a|b|c/
// 配合 - 使用,表示直接
var test02 = /[a-z0-3]/



实例
- 邮件匹配
var emalReg = /[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;

- 手机号
var telReg = /^1[34578]\d{9}$/;

3.url
var urlReg = /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/

- 日期格式
var dataFormatReg = /Invalid|NaN/

- ISO日期格式
var ISODataFormatReg = /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/;

- 身份证号码
var idcard = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)/

参考
说明
在 《JavaScript》语言精粹里面,全部都是使用这种类似铁路图进行说明,图文结合真的是一种很明确、很清晰讲述和学习的方式!
后续更新,保存