ES6正则表达式的一些新功能总结

ES6正则表达式的一些新功能总结

ES6为正则表达式新增了很多功能,包括修饰符、断言、Unicode支持等等。下面详细介绍一下ES6正则表达式的新功能。

修饰符

ES6新增了两个修饰符:u 和 y。

u 修饰符

u 修饰符用于处理 Unicode 字符,可以正确处理四个字节的 UTF-16 编码。

示例:

/^\uD83D/u.test('\uD83D\uDC2A') // true
/^\uD83D/.test('\uD83D\uDC2A') // false

上面代码中,如果不加 u 修饰符,正则表达式就会认为字符串为两个字符,从而匹配失败。

y 修饰符

y 修饰符类似于 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"]
r2.exec(s) // null

上面代码中,第二次执行 r2.exec(s) 返回 null,因为只从剩余的第一个位置开始匹配,而 aaa 已经匹配过了,剩余的字符串不是下划线开头,所以匹配失败。

断言

断言用来匹配字符串的位置,ES6新增了先行断言和后行断言两种断言方式。

先行断言

先行断言(Lookahead)指在匹配规则中加入一个问号和等号(?=),表示所匹配的内容必须在特定字符串之前。

示例:

const text = 'hello world';
const regex = /hello(?=\sworld)/;
console.log(regex.test(text)); // true

上面代码中,?=\sworld 表示匹配 hello 之后必须紧跟一个空格,而后面跟着的 world 不被匹配。

后行断言

后行断言(Lookbehind)指在匹配规则中加入一个问号和小于符号(?<=),表示所匹配的内容必须在特定字符串之后。

示例:

const text = 'a1b2c3d4';
const regex = /(?<=[a-z]\d)b/g;
console.log(text.match(regex)); // ['b']

上面代码中,匹配规则中的 ?<=[az]\d 表示要匹配的内容前面必须是一个小写字母和数字组成的字符,因此 b 才被匹配。

Unicode 支持

ES6 新增了对 Unicode 字符的支持,可以使用 u 修饰符解析 Unicode 编码。

示例:

const text = '你好?';
const regex = /\uD83D/u;
console.log(regex.test(text)); // true
console.log(regex.test(text[2])); // false

上面代码中,变量 text 存储的字符串中,第三个字节是一个 Unicode 表情符号,只有使用 u 修饰符解析后才能被正确匹配。

结论

ES6为正则表达式添加了许多有用的功能,可以更好地支持处理 Unicode 码点,提供更好的全局匹配能力以及增强了定位的能力。我们可以在实际使用中逐步地熟悉和应用它们。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ES6正则表达式的一些新功能总结 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • vue3中使用ant-design-vue的layout组件实现动态导航栏和面包屑功能

    Vue3中使用Ant Design Vue的Layout组件实现动态导航栏和面包屑功能攻略 Ant Design Vue是一个基于Vue.js的UI组件库,它提供了丰富的组件和样式,可以帮助我们快速构建漂亮的用户界面。在Vue3中,我们可以使用Ant Design Vue的Layout组件来实现动态导航栏和面包屑功能。下面是详细的攻略: 步骤1:安装Ant …

    other 2023年9月6日
    00
  • 电脑XP系统最大支持多大内存?

    根据我的了解,Windows XP是一款32位操作系统,其最大支持的内存容量受到物理地址空间的限制。根据官方文档,Windows XP 32位版本的最大内存支持为4GB。然而,由于系统需要使用一部分内存来管理硬件资源和其他系统任务,实际可用的内存容量会略低于4GB。 在实际使用中,如果你的计算机安装了4GB内存,Windows XP系统可能只能识别到3GB或…

    other 2023年7月31日
    00
  • 离线chrome插件安装文件(crx)的安装方法

    离线chrome插件安装文件(crx)的安装方法 Chrome插件是Chrome浏览器的一大特色,但有时我们在某些网络环境下无法在线安装插件或者从webstore下载插件失败的情况时,就需要使用离线chrome插件安装文件(crx)的安装方法。本文将对离线安装crx文件的步骤进行详细讲解。 第一步:下载CRX文件 首先,我们需要下载需要安装的CRX文件。通过…

    其他 2023年3月28日
    00
  • Android SharedPreferences存取操作以及封装详解

    Android SharedPreferences 是一种轻量级的存储方式,可以用来存储一些简单的数据。在下面的内容中,我会详细介绍SharedPreferences 的存取操作以及封装,其中包含两个示例说明。 什么是SharedPreferences? SharedPreferences 是一种轻量级的存储方式。它主要用来存放一些简单的键值对数据,比如一些…

    other 2023年6月25日
    00
  • C#实现DataList里面嵌套DataList的折叠菜单

    C#实现DataList里面嵌套DataList的折叠菜单攻略 1. 准备工作 在开始实现之前,确保你已经安装了适当的开发环境,比如Visual Studio,并且已经创建了一个C#项目。 2. 创建数据模型 首先,我们需要创建一个数据模型来表示菜单项。假设我们的菜单项有以下属性:Id、Name、ParentId和Children。Id是菜单项的唯一标识符,…

    other 2023年7月28日
    00
  • 微软工具ilmerge

    微软工具ilmerge ilmerge是由微软提供的一个命令行工具,可以把多个.NET程序集合并成一个程序集。 安装和使用 ilmerge可以从NuGet中获取,也可以从官方网站下载。 安装好ilmerge后,打开命令行工具,切换到包含程序集文件的目录中,使用以下命令即可将多个程序集合并成一个程序集: ilmerge /out:Merged.dll Asse…

    其他 2023年3月29日
    00
  • 深入理解数组指针与指针数组的区别

    深入理解数组指针与指针数组的区别 数组指针 数组指针实际上就是指向一个数组的指针。用一句话来描述:数组指针是指向数组的指针变量。 声明数组指针的基本语法:数组类型 * 指针变量名。 数组指针的使用 我们可以通过数组指针来处理数组,例如访问数组的某个元素,也可以通过数组指针将数组传递给函数来处理。 在访问数组元素时,可以使用以下的两种方式: #include …

    other 2023年6月25日
    00
  • Android列表实现(3)_自定义列表适配器思路及实现代码

    我们来详细讲解一下“Android列表实现(3)_自定义列表适配器思路及实现代码”的攻略。 1. 什么是自定义列表适配器 自定义列表适配器是一种可以根据自己的需求自定义列表项布局的适配器。将一个自定义的布局文件作为列表项的布局,再通过代码将数据绑定到布局上,最后使用适配器将多个列表项合成一个列表。 2. 自定义列表适配器的优点 相比于系统提供的默认适配器,自…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部