1.正则表达式的概念
定义字符串中字符出现规则的表达式
1.1正则表达式的常见使用场景
切割 替换 验证
1.2 定义正则表达式
1.2.1 /正则表达式/
eg:最简单的正则:/原文/ig(i为忽略大小写,g为全局)
1.2.2 备选字符集
[]:一个备选字符集只能规定一位字符可用的备选字符列表
用法:/[]/
强调:一个备选字符集只能规定一位字符,正则默认只要满足后,就不会管用户后续的操作了,不符合实际要求
!!!只用用于验证,必须的使用格式/^[备选字符集]$/,代表的意思为从前到后必须全部一一匹配
特殊:如果备选字符集是连续的,可以省略中间部分用-链接。
eg:一位数字[0-9],一个英文字符[A-Za-z],一个汉字[\u4e00-\u9fa5]
1.2.3 预定义字符集
一位数字:\d
一位数字字母下划线:\w
一位空格:\s
1.2.4 量词(规定一个字符集出现几次,只针对于前面一个相邻的字符集)
1.{n,m} 最少出现n次,最多出现m次
2.{n,} 最少出现n次,多了不限
3.{n} 只能出现n次
4.? 最多出现一次,可有可无
-
- 出现次数不限,可有可无
6.+ 最少出现一次,多了不限
1.2.5 指定匹配的位置
^以xxx开头 $以xxx结尾
1.2.6 预判
公式: (?![0-9]+$)字符集量词 - 不能全由数字组成
(?![0-9A-Z]+$)字符集量词 - 不能全由数字组成、不能全由大写组成、不能全由数字和大写的组合组成
(?![a-z0-9]+)(?![0-9A-Z]+$)[0-9A-Za-z]{2,4} -
不能是纯数字、纯大写、纯小写
也不能是小写和数字的组合
也不能是小写和大写的组合
也不能是数字和大写的组
1.3 正则表达式的用法---分割
var arr = str.split(reg)
1.4 正则表达式的用法--替换
1.4.1 基本替换法:var newstr=str.replace('reg','新内容')
1.4.2 高级替换法
var newStr=str.replace(/[我卧窝][槽操艹草肏去]+/g,function(a,b,c){
console.log(a);//正则匹配到的关键字
console.log(b);//正则匹配到的关键字的下标
console.log(c);//原文本身
return a.length==2?"**":"***";
});
1.4.3 格式化
如果替换API使用正则时,并且里面带有分组,那么你会得到更多的形参
var newStr=str.replace(reg,function(a,b,c...){
console.log(a);//正则匹配到的关键字
console.log(b);//第一个分组获取到的内容
console.log(c);//第二个分组获取到的内容
return "格式化的东西"
});
var n = '412823199512181771';
n.replace(/(\d{6})(\d{4})(\d{2})(\d{2})/,function(a,b,c,d,e){
console.log(c+'年'+d+'月'+e+'日');
})