ES6标准入门之正则表达式的拓展

Posted hexiaobao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6标准入门之正则表达式的拓展相关的知识,希望对你有一定的参考价值。

  所谓正则表达式,又称规则表达式。(英语: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模式,字符串中所有的字符都匹配,包括换行符( )、回车符( )等。

  介绍完各种修饰符之后,为大家重点介绍具名组匹配,简而言之就是正则表达式使用圆括号进行组匹配,先看下面一段代码

  

  技术分享图片
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
组匹配

  看完这段代码是不是觉得之前自己处理时间的时候白白写了很多代码,反正我是这样觉得的,我一直都是对后台传给我的时间字段进行split分隔,显得很low,有了组匹配是不是高大上了很多,嘿嘿。

  所谓具名组匹配就是在圆括号内部,在模式的头部添加“问号 + 尖括号 + 组名”,然后在exec方法中返回结果的groups属性上引用该组名,看下面代码

  技术分享图片
 1 const RE_DATA_REG = /(?<year>d{4})-(?<month>d{2})-(?<day>d{2})/;
 2 
 3 const maset_re = RE_DATA_REG.exec(‘1999-12-31‘);
 4 
 5 console.log(maset_re.groups.year);
 6 console.log(maset_re.groups.year);
 7 console.log(maset_re.groups.year);
 8 
 9 
10 //       1999
11 //       12
12 //       31
View Code

 

以上是关于ES6标准入门之正则表达式的拓展的主要内容,如果未能解决你的问题,请参考以下文章

ES6里关于正则表达式的拓展

ES6正则拓展

《ES6标准入门》49~68Page 数值的拓展 数组的拓展

文本处理三剑客之awk——从入门到放弃

ES6入门——正则的扩展

ES6学习总结之 正则表达式