ES11 正则表达式总结以及解决遇到的问题

阅读时长 4 分钟读完

ES11 正则表达式总结以及解决遇到的问题

正则表达式是前端开发中的重要工具之一,它可以帮助我们在字符串中查找、替换、匹配特定的内容。ES11 对正则表达式进行了一些改进和增强,本文将对 ES11 正则表达式进行总结,并解决一些常见的问题。

  1. 新增了(?<=...)(?<!...)断言

在 ES11 中,新增了(?<=...)(?<!...)两个断言,用于正则表达式中的先行断言和后行断言。先行断言和后行断言可以帮助我们在匹配字符串时,只匹配满足特定条件的字符串,而不是匹配整个字符串。

先行断言和后行断言的语法如下:

  • (?<=...):表示先行断言,它要求当前位置的前面匹配指定的表达式。
  • (?<!...):表示后行断言,它要求当前位置的后面不匹配指定的表达式。

示例代码:

  1. 新增了String.prototype.matchAll()方法

ES11 新增了String.prototype.matchAll()方法,用于在字符串中查找所有匹配指定正则表达式的子串,并返回一个迭代器。该方法返回的迭代器可以让我们逐个遍历所有匹配的子串。

示例代码:

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

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

--- ------ ----- -- --------- -
  ----------------------
-
-- -------
-- -------
  1. 新增了RegExp.prototype.dotAll属性

ES11 新增了RegExp.prototype.dotAll属性,用于控制.匹配任意字符时是否包括换行符。如果设置为true,则.可以匹配任意字符,包括换行符;如果设置为false(默认值),则.不能匹配换行符。

示例代码:

  1. 解决正则表达式中的贪婪匹配问题

在正则表达式中,*+等量词默认是贪婪的,它们会匹配尽可能多的字符。ES11 中,可以通过在量词后面加上?来解决贪婪匹配问题,使得量词变成非贪婪的。

示例代码:

总结

ES11 对正则表达式进行了一些增强和改进,包括新增了(?<=...)(?<!...)断言、String.prototype.matchAll()方法、RegExp.prototype.dotAll属性,以及解决了贪婪匹配问题。这些新特性可以让我们更加方便地使用正则表达式,提高开发效率。在开发中,我们可以灵活使用这些特性,解决实际问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65e5883f1886fbafa411c581

纠错
反馈