所谓正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。在之前使用基于Jquery库开发项目的时候,用的正则表达式最多的就是一些输入框的检验,比如检验电话号码或者邮箱的格式是否合适等。
在ES5中,RegExp构造函数的参数有两种情况:
一、参数是字符串,这是第二个参数标识正则表达式的修饰符(flag)。
var regex = new RegExp('xyz', 'i');
// 等价于 var regex = /xyz/i;
二、参数是一个正则表达式,这时会返回一个原有正则表达式的拷贝。
var regex = new RegExp( /xyz/i) ;
// 等价于 var regex = /xyz/i;
但是ES5不允许此时使用第二个参数添加修饰符,即第一种方式,否则就会报错。ES6改变了这种行为,如果RegExp构造函数第一个参数是正则表达式,那么可以使用第二个参数指定修饰符。而且,返回的正则表达式会忽略原有正则表达式的修饰符,只有重新指定。下面为大家介绍一下ES6对正则表达式新增的各种修饰符:
1、u修饰符
ES6对正则表达式添加u修饰符,含义为“Unicode模式”,用来正确处理大于\uFFFF的Unicode字符,也就是说可以正确处理4个字节的UTF-16编码。
2、y修饰符
y修饰符又叫粘连,与g修饰符类似,都是从上一次匹配成功的下一个位置开始,只不过y修饰符会确保匹配必须从剩余的第一个位置开始。
3、s修饰符
s修饰符就是doAll模式,字符串中所有的字符都匹配,包括换行符(\n)、回车符(\r)等。
介绍完各种修饰符之后,为大家重点介绍具名组匹配,简而言之就是正则表达式使用圆括号进行组匹配,先看下面一段代码
1 const RE_DATA = /(\d{4})-(\d{2})-(\d{2})/; 2 const maset = RE_DATA.exec('1999-12-31'); 3 console.log(maset[1]); 4 console.log(maset[2]); 5 console.log(maset[3]); 6 7 // 1999 8 // 12 9 // 31