正则表达式

154 阅读2分钟

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]+)(?![azAZ]+)(?![a-zA-Z]+)(?![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+'日');
        })