如何在 ES9 中使用正则表达式

正则表达式是一种广泛应用于字符串匹配、替换等操作的工具,它可以在很多编程语言中使用,包括 JavaScript。ES9 支持了一些新的正则表达式语法,本文章将介绍如何在 ES9 中使用正则表达式。

RegExp 构造函数的扩展

在 ES9 中,RegExp 构造函数得到了扩展,它现在可以接收第二个参数 flags,和正则字面量的 flags 相同。例:

--- ----- - --- ------------- ------

在这个例子中,创建了一个不区分大小写的全局模式正则表达式,与下面正则字面量的写法等价:

--- ----- - --------

这个语法的优势之一是可以在程序运行时动态生成正则表达式,因为我们可以在标准的字符串中定义正则表达式,稍后再使用 RegExp 构造函数解析该字符串。

RegExp 现在支持后行断言

ES9 引入了后行断言,它们可以用来匹配一个字符串中的某些内容,这些内容在其前面是一个特定模式,同时还在另一些特定模式的后面,后行断言用 (?<=...) 表示,在 ... 的位置插入匹配模式即可。例如:

--- ----- - --------------
----------------------------------- -- -- -------

在这个例子中,后行断言匹配了一个字符串 "bar",它前面必须是 "foo",这个语法还支持使用 (?<!...) 表示“不再这个动作的前面”。

RegExp 现在支持 Unicode 属性转义

Unicode 属性转义是一些特殊的转义序列,它们可以用来匹配特定的 Unicode 属性值。ES9 引入了适用于正则表达式中的 Unicode 属性转义。

在正则表达式中使用 Unicode 属性转义时,必须写成 \p{...} 的形式,例如匹配 Unicode 双字节字符:

--- ----- - -------------------------
-------------------------------- -- ----

在这个例子中,\p{Unified_Ideograph} 表示一个 Unicode 第一层次表意文字。

一些常见的 Unicode 属性与值

字母和数字

  • \p{L}:任意 Unicode 字母字符,等价于 [a-zA-Z]。
  • \p{Ll}:任意小写字母字符。
  • \p{Lu}:任意大写字母字符。
  • \p{Lt}:任意标题字母,如标题的使用,例如英文中的首字母大写,后续字母小写。
  • \p{Lm}:任意标记字母,例如阿拉伯语中的命名字符。
  • \p{Lo}:其他的任意字母字符集。

标点符号

  • \p{P}:字符以及任何类型的标点符号字符。
  • \p{Pc}:任何连字符或下划线,如破折号、连字号。
  • \p{Pd}:任何类型的连字符,如 iso-8859-1 中中划线的一个副本。
  • \p{Ps}:任何类型的起始括号,如小括号。
  • \p{Pe}:任何类型的结束括号,如小括号。
  • \p{Pi}:任何类型的起始引号,如中文的引号。
  • \p{Pf}:任何类型的结束引号,如中文的引号。
  • \p{Po}:任何类型的其他标点符号。

示例代码

使用后行断言匹配域名中二级域名,并且在它的前面必须是 www 或 m:

--- ----- - -------------------------
------------------------------------------- -- -- --------------
---------------------------------------- -- -- -------------

使用 Unicode 属性转义匹配接连出现的表意文字:

--- ----- - --------------------------
-------------------------------- -- -- -------
------------------------------------ -- -- -----------

总结

ES9 带来了一些新的正则表达式语法,其中后行断言和 Unicode 属性转义是其中最引人注目的特性之一。在实际使用过程中,我们可以灵活应用这些语法,提升代码的可读性和效率。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6532a0ca7d4982a6eb56d866


猜你喜欢

  • Node.js 中使用 Puppeteer 进行自动化测试的教程

    介绍 Puppeteer是 Google 出品的一个 Node.js 库,用于控制浏览器, 作为自动化测试、爬虫等的工具而广泛应用。在自动化测试领域,Puppeteer 可以与 Mocha、Jest ...

    1 年前
  • ECMAScript 2016 (ES7) 新特性之模板字符串标签函数

    模板字符串标签函数是 ES7 中新增的特性,它可以让我们在模板字符串中嵌入逻辑表达式,从而更加灵活地处理模板字符串。本文将对模板字符串标签函数的相关知识进行详细介绍和实例演示。

    1 年前
  • Webpack 如何配置打包规则

    随着前端技术的不断发展,Webpack 已经成为了最为流行的前端打包工具之一。通过配置打包规则,我们可以让 Webpack 打包我们所需要的文件,从而将多个文件合并成一个或多个打包文件。

    1 年前
  • Babel-preset-typescript 的使用方法介绍

    在日常的前端开发中,我们经常使用 TypeScript 来增强代码的可维护性和稳定性。但是,当我们需要将 TypeScript 代码转换成 Javascript 代码来在浏览器中运行时,我们需要借助工...

    1 年前
  • ES9 中新的正则表达式特性

    正则表达式是前端开发中非常常用的一种工具,它可以在字符串中寻找并匹配特定模式的文本,使得开发者能够更加高效地完成字符串操作。在ES9中,正则表达式得到了进一步扩展,让我们一起来看看ES9中新的正则表达...

    1 年前
  • Sequelize 中如何处理查询结果排序

    Sequelize 是一个基于 Node.js 的 ORM 框架,它支持多种数据库,并提供了丰富的 API 来处理数据库的操作。在 Sequelize 中,我们可以轻松地对数据库进行各种操作,如查询、...

    1 年前
  • 解决 ES8 的 await 中的 range 边界问题

    在 ES8 中,async/await 已经成为了管理异步操作的一种非常便捷的方式。然而,在使用 await 时,有时会遇到 range 边界问题,导致程序出错或出现未预期的结果。

    1 年前
  • 如何处理响应式设计中对文字的横向拉伸问题

    如何处理响应式设计中对文字的横向拉伸问题 在响应式设计中,文本内容的布局经常需要随着窗口大小的改变而自适应调整,但是在某些情况下,文本会因为过度拉伸而出现变形,从而影响用户阅读体验。

    1 年前
  • 理解 SSE:使用 HTML5 方式推送实时数据

    在现代 Web 开发中,实时更新是越来越重要的需求。Server-Sent Events (SSE) 是一种支持服务器在客户端浏览器请求之后主动推送数据的技术。相对于 Websocket,SSE 更加...

    1 年前
  • ES2020 的 Globalthis 及使用方法

    在最近发布的 ECMAScript 2020(ES2020)规范中,新增了一个非常重要的全局对象 Globalthis。它在一定程度上解决了在不同环境下全局对象的不一致性问题,同时也为开发者们带来了更...

    1 年前
  • 调试 Redux:日志监控、时间旅行和数据可视化

    调试 Redux:日志监控、时间旅行和数据可视化 在前端开发中,调试是一个必不可少的环节。Redux 是一个常用的状态管理库,可以帮助我们更好地管理和维护应用程序的状态。

    1 年前
  • Java 性能分析工具 jstat 使用方法介绍

    在开发 Java 应用程序时,经常需要对应用程序的性能进行跟踪和分析。Java 性能分析工具 jstat 是一个专门用于监视 Java 虚拟机 (JVM) 的性能工具,它可以直观显示 JVM 的运行状...

    1 年前
  • PM2 监控 Node.js 进程文件变动自动重启

    前言 在日常的开发工作中,我们常常需要将 Node.js 启动的服务在后台一直运行。通过 PM2,我们可以监控 Node.js 进程,实现自动重启和文件变动检测。本文将介绍如何使用 PM2 监控 No...

    1 年前
  • 实战篇:Next.js 与 Redux 搭配使用的完整案例分享

    前言: Next.js 是一个基于 React 的、服务端渲染的应用框架,它可以非常方便地创建同构应用。而 Redux 则是一个非常流行的状态管理工具,许多开源项目都使用它作为应用的状态管理工具。

    1 年前
  • 如何在 LESS 中使用属性和类的优先级

    LESS 是一种动态样式表语言,让 CSS 更加易于管理和维护。在 LESS 中,属性和类的优先级是非常重要的,因为它们决定了特定样式的应用顺序。在本文中,我们将介绍如何在 LESS 中使用属性和类的...

    1 年前
  • Hapi.js 实现分布式 API 服务的实践与总结

    随着云计算和大数据时代的来临,分布式系统越来越受到欢迎。在分布式系统里,服务的数量会不断增加,服务需要按照功能模块分离,以便于维护。API服务因其能够为不同应用程序、不同平台提供服务的优势,已经越来越...

    1 年前
  • Redis RDB 恢复指南:如何使用 redis-check-rdb 工具读取备份数据恢复 Redis

    Redis 是一款开源的内存数据库,它支持多种数据结构,并且性能优异。在生产环境中,保证 Redis 数据的可靠性非常重要。为了保证数据的可靠性,我们需要定期备份 Redis 数据。

    1 年前
  • ES6 中的 if 语句中使用 const 关键字的注意事项

    在 ES6 中,我们引入了 const 关键字来声明常量。使用 const 定义的常量在声明后不能被重新赋值。在 if 语句中使用 const 定义常量时,需要注意以下几点。

    1 年前
  • 使用 Mocha 测试框架:对 Ajax 响应进行测试

    Mocha 是一个流行的 JavaScript 测试框架,它可以用于测试前端和后端应用。在这篇文章中,我们将使用 Mocha 来测试前端应用中的 Ajax 响应。通过本文的学习,你将会学到: Moc...

    1 年前
  • 在 ES10 中正确使用 nullish coalescing 运算符

    在 ES10 中正确使用 nullish coalescing 运算符 在前端开发中,我们经常需要处理变量为空或未定义的情况,为了避免出现 TypeError,我们通常使用逻辑或运算符 || 进行默认...

    1 年前

相关推荐

    暂无文章