如何使用 ES9 扩展的正则表达式方法

如何使用 ES9 扩展的正则表达式方法

正则表达式是在前端开发中广泛使用的一个强大工具,可以用于匹配、替换、验证等多种操作。ES9 扩展了正则表达式的功能,使其更加灵活和强大。本文将介绍ES9扩展的正则表达式方法,提供详细的学习和指导意义。

ES9扩展的正则表达式方法

ES9扩展了正则表达式方法,增加了两个新的修饰符 $和 s ,以及四个新的正则表达式方法 update、search、replaceAll和matchAll。

  1. $ 修饰符

$ 修饰符是一个新的匹配修饰符,它可以匹配行尾,视情况而定。如果 RegExp 对象有标志 m,则 $ 修饰符匹配输入字符串所有的行尾。如果 RegExp 对象没有标志 m,则 $ 修饰符只匹配输入字符串的结尾。

例如,以下正则表达式匹配以 "world" 结尾的所有行:

/ world $ / gm

$ 修饰符对于搜索多行文本非常有用。它让我们可以将整个文本分解成行,并在每个行上执行匹配。

  1. s 修饰符

s 修饰符是一个新的匹配修饰符,它使点号可以匹配任何字符,包括换行符。换而言之,s 修饰符让 . 匹配任何字符,而不仅仅是除了换行符外的所有字符。

以下正则表达式可以匹配任何字符,包括换行符:

/ . / s

s 修饰符非常适用于匹配多行文本,它使点号可以匹配多行文本中的换行符,从而让我们可以更精确地匹配文本行。

  1. update() 方法

update() 方法是一个新的 RegExp 对象方法,它允许更改某个正则表达式的属性(如修饰符),同时保持原来的匹配状态。这对于在循环中重用正则表达式非常有用。

以下是一个简单的示例,演示了如何使用 update() 方法更改修饰符:

let re = / hello world / ig; console.log(re.test("Hello World")); re.update("g"); console.log(re.test("Hello World"));

输出:

true false

  1. search() 方法

search() 方法在字符串中搜索与正则表达式匹配的第一个子字符串,并返回该字符串的起始位置。如果没有找到匹配项,则返回 -1。

以下是一个示例,演示了如何使用 search() 方法:

let re = / hello /i; console.log("Hello World".search(re));

输出:

0

  1. replaceAll() 方法

replaceAll() 方法在字符串中搜索与正则表达式匹配的所有子字符串,并用指定的字符串替换它们。

以下是一个示例,演示了如何使用 replaceAll() 方法:

let re = / hello /ig; console.log("Hello World, hello kitty, hello world".replaceAll(re, "hi"));

输出:

Hi World, hi kitty, hi world

  1. matchAll() 方法

matchAll() 方法返回由所有与正则表达式匹配的子字符串组成的迭代器。

以下是一个示例,演示如何使用 matchAll() 方法:

let re = / hello /ig; let str = "Hello World, hello kitty, hello world"; for (let match of str.matchAll(re)) { console.log(match); }

输出:

[ 'Hello', index: 0, input: 'Hello World, hello kitty, hello world', groups: undefined ] [ 'hello', index: 12, input: 'Hello World, hello kitty, hello world', groups: undefined ] [ 'hello', index: 24, input: 'Hello World, hello kitty, hello world', groups: undefined ]

结论

ES9 扩展了正则表达式的功能,增加了 $ 和 s 修饰符,以及四个新的正则表达式方法 update、search、replaceAll和matchAll。这些新功能使正则表达式更加灵活和强大,可以更轻松地处理各种文本操作。当然,也需要注意在实际开发中使用时,合理运用这些方法。

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


猜你喜欢

  • Angular 中解决 "Error: Can't bind to 'ngModel' since it isn't a known property of 'input'" 的方法

    在使用 Angular 框架进行前端开发时,我们可能会碰到这样一个错误信息:"Error: Can't bind to 'ngModel' since it isn't a known propert...

    2 个月前
  • ES10 如何兼容 ES6 及以下版本

    随着 JavaScript 技术的不断发展,ECMAScript 成为了前端开发者必须学习的一项技能。ECMAScript 不断更新,每个版本都会增加新的特性和语法。

    2 个月前
  • VueCLI3 配置 Jest 单元测试遇到的那些坑

    如果你在使用 VueCLI3 建立的项目中加入了单元测试,那么你可能会遇到一些配置上的困难,特别是在使用 Jest 时。本文将介绍如何在 VueCLI3 中添加 Jest 单元测试,并列举一些遇到的问...

    2 个月前
  • RESTful API 中关于 HTTP 状态码的知识总结

    在进行 RESTful API 开发中,HTTP 状态码是非常重要的一部分。它们用于指示访问资源的结果,并在发生问题时提供有用的信息。在本文中,我们将讨论常见的 HTTP 状态码及其含义、示例代码以及...

    2 个月前
  • 前端性能调试与优化的探究

    引言 在现代 Web 领域,前端性能是一个非常重要的问题。随着 Web 应用越来越复杂,前端代码的规模和复杂度也在逐渐增加。如果不进行良好的性能调试和优化,会给用户带来不好的体验。

    2 个月前
  • 使用 Headless CMS 进行数据可视化的技巧分享

    Headless CMS(无头 CMS)是一种不同于传统 CMS 的架构,它将内容与前端视图分离。它通过 API 接口将数据暴露给开发者,开发者可以根据自己的需要对数据进行处理和展示,从而实现了更高的...

    2 个月前
  • ECMAScript 2017 (ES8) 中的 exponentiation 操作符

    在 ECMAScript 2017 (ES8) 中,新增了一个 exponentiation(指数)操作符,用于进行指数运算。这个操作符的优先级相当高,比乘法和除法还要高,因此在运算时需要注意。

    2 个月前
  • 如何在 Node.js 项目中使用 Babel

    Babel 是一个 JavaScript 编译器,可以将 ES6/ES7/ES8 的代码转换为可在当前和旧版浏览器上运行的代码。它是现代前端应用程序开发中不可或缺的工具之一。

    2 个月前
  • ECMAScript 2020 (ES11) 中的 import() 使用指南

    在 ECMAScript 2020 中,JavaScript 引入了一个新的 import() 函数,可以动态地加载 JavaScript 模块。与传统的 import 语句不同,在 import()...

    2 个月前
  • Hapi 中的身份验证和授权:完整指南

    在今天的互联网时代,网站和应用程序安全性变得特别重要。为了保护网站和应用程序不被黑客攻击,越来越多的开发者们倾向于使用身份验证和授权技术。Hapi 是一种基于 Node.js 的 Web 框架,它提供...

    2 个月前
  • 如何在 Deno 中部署 MongoDB?

    Deno 是一个现代化的 JavaScript 和 TypeScript 运行时环境,与 Node.js 相比具有更高的安全性和更好的开发体验。MongoDB 是一个流行的 NoSQL 数据库,可以为...

    2 个月前
  • 无障碍设计:WordPress 如何改进

    作为一个人人都可以使用的平台,无障碍设计是 WordPress 官方一直致力改善的目标之一。然而,要做好无障碍设计并不是一件容易的事情,需要考虑到很多有各种不同障碍的用户群体的需求。

    2 个月前
  • 解析 Jest 模拟器 Sandbox 的使用方法

    Jest 是一个广为使用的 JavaScript 测试框架,用于编写高效和可靠的测试用例。为了更方便地编写和运行测试用例,Jest 提供了一个便捷的模拟器 Sandbox。

    2 个月前
  • RxJS of 操作符实现数据流实时编辑的示例解析

    RxJS是一个流行的JavaScript编程库,它提供了许多操作符来处理数据流。其中,RxJS of操作符是一个很好的工具,可以用来创建可观察的对象,并且可以进行数据流的实时编辑。

    2 个月前
  • 如何使用 React 实现按需加载

    如何使用 React 实现按需加载 React 是一种出色的前端框架,适用于开发大型 Web 应用程序。React 的一项重要特性是按需加载,这是一种将代码按照需要动态地加载到应用程序中的方法。

    2 个月前
  • Mocha 测试框架入门

    如果你是一名前端开发人员,你一定知道测试的重要性。而 Mocha 是一个流行的 JavaScript 测试框架,它可以用于编写单元测试、集成测试和端到端测试。在本文中,我们将介绍 Mocha 的入门教...

    2 个月前
  • MongoDB 的文本搜索与语言分析

    在 Web 应用程序的设计和开发中,文本搜索和语言分析是非常重要的一部分。而 MongoDB 是一种数据库管理系统,它不仅可以存储数据,还可以进行文本搜索和语言分析。

    2 个月前
  • 使用 Promise 传递数据和状态的最佳实践分享

    Promise 是 JavaScript 中处理异步操作的一种机制,它让我们可以更优雅地管理异步操作,避免了回调地狱的问题。在前端开发中,我们经常需要将数据和状态从一个 Promise 传递到另一个 ...

    2 个月前
  • 使用 Hapi 和 Sequelize 进行多租户数据库架构

    前言 当我们开发多租户应用程序时,需要在数据库层面考虑如何才能管理多个租户的数据。在传统的单租户应用程序中,我们可以通过在应用程序中设置不同的权限来区分不同的用户。

    2 个月前
  • TypeScript 中如何避免循环引用

    TypeScript 中如何避免循环引用 在编写大型应用程序时,循环引用是难免会碰到的问题。TypeScript 提供的模块系统可以帮助我们解决循环引用的问题。本文将介绍 TypeScript 中如何...

    2 个月前

相关推荐

    暂无文章