美文网首页
ES6 正则表达式的扩展

ES6 正则表达式的扩展

作者: TryCatch菌 | 来源:发表于2019-12-01 18:36 被阅读0次

基于ES6标准入门(第3版)这本书的笔记
要学习angula,vue,react等新的前端框架,必须先熟悉ES6的语法


RegExp构造函数

在ES5中使用RegExp构造函数写正则表达式的时候,可以是单个参数字符串,匹配字符串的规则

var regex = new RegExp('xyz');
// 等价于
var regex = /xyz/

也可以是两个参数,第一个参数为字符串,表示正则表达式的匹配规则,第二个参数为正则表达式的修饰符

var regex = new RegExp('xyz','i');
// 等价于
var regex = /xyz/i

也可以是单个参数正则表达式带修饰符

var regex = new RegExp(/xyz/i);
// 等价于
var regex = /xyz/i

但是ES5不允许第一个参数为正则表达式,第二个参数为修饰符,这样会报错

var regex = new RegExp(/xyz/,'i');

ES6中运行第一个参数是正则表达式,第二个参数是修饰符,而且,如果第一个参数的正则表达式带有修饰符,会忽略第一个参数的修饰符,使用新的修饰符

// 会忽略ig修饰符,使用i修饰符规则
var regex = new RegExp(/xyz/ig,'i'); 

常见的修饰符含义

修饰符 描述
i 执行对大小写不敏感的匹配
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
m 执行多行匹配

ES6新增的修饰符和属性

u修饰符

ES6对正则表达式添加了u修饰符,含义为“Unicode模式”,用于匹配大于\uFFF的字符,也就是说,可以正确处理4个字节的UTF-16编码

/^\uD83D/u.test('\uD83D\uDC2A') // false
/^\uD83D/.test('\uD83D\uDC2A') // true
y修饰符

ES6对正则表达式添加了y修饰符,叫做“粘连”(sticky)。y修饰符与g修饰符类似,也是全局匹配,后一次匹配都是从上一次匹配成功的下一个位置开始。不同的是,g修饰符只要剩余位置中存在匹配就可以,而y修饰符要求匹配必须从生于的第一个位置开始。

var s = "aaa_aa_a";

var r1 = /a+/g;
var r2 = /a+/y;

r1.exec(s); // 返回["aaa"]
r2.exec(s); // 返回["aaa"]

r1.exec(s); // 返回["aa"]
// 因为y第二次执行匹配的时候剩余字符串为_aa_a,所以y修饰符的正则无法匹配,返回null
r2.exec(s); // 返回 null

与y修饰符相匹配,ES6的正则对象多了sticky属性,表示是否设置了y修饰符

var r1 = /a+/y;
r1.sticky // true
flags 属性

ES6为正则表达式新增了flags属性,会返回正则表达式的修饰符

// ES5 source属性返回正则表达式正文
/xyz/ig.source // "xyz"

// ES6 flags属性返回正则表达式修饰符
/xyz/ig.flags // ‘ig’

相关文章

  • es6的数值,函数,字符串扩展

    一、es6的数值扩展 二、es6的函数扩展 代码效果:对象解构在函数中的应用 三、es6字符串扩展 常用方法 代码...

  • JS正则表达式

    JS正则表达式一条龙讲解,从原理和语法到JS正则、ES6正则扩展,最后再到正则实践思路 Stinson 关注 20...

  • es6之扩展运算符 三个点(...)

    es6之扩展运算符 三个点(...)对象的扩展运算符数组的扩展运算符总结es6之扩展运算符 三个点(…)对象的扩展...

  • 正则详解--程序员必备

    转自: JS正则表达式一条龙讲解,从原理和语法到JS正则、ES6正则扩展,最后再到正则实践思路 温馨提示:文章很长...

  • 2018-04-21

    ES6数组的扩展整理

  • 2018-08-24

    ES6对象的扩展

  • 正则表达式

    正则表达式元字符 扩展正则表达式元字符

  • ES6新增特性(二)

    ES6 的内置对象扩展 Array 的扩展方法 一、Array 的扩展方法 1. 扩展运算符(展开语法) 扩展运算...

  • 【现学现忘&Shell编程】— 29.扩展正则表达式

    1、扩展正则表达式说明 熟悉正则表达式的童鞋应该很疑惑,在其他的语言中是没有扩展正则表达式说法的,在Shell的正...

  • ES6扩展归纳

    ES6扩展归纳 介绍ES6相比与ES5在原有对象上的扩展,包括字符串、正则、数值、函数、数组、对象等扩展,本文是阮...

网友评论

      本文标题:ES6 正则表达式的扩展

      本文链接:https://www.haomeiwen.com/subject/iwftgctx.html