简单的理解正则
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》语言精粹里面,全部都是使用这种类似铁路图
进行说明,图文结合真的是一种很明确、很清晰讲述和学习的方式!
后续更新,保存