ES11 正则表达式总结以及解决遇到的问题
正则表达式是前端开发中的重要工具之一,它可以帮助我们在字符串中查找、替换、匹配特定的内容。ES11 对正则表达式进行了一些改进和增强,本文将对 ES11 正则表达式进行总结,并解决一些常见的问题。
- 新增了
(?<=...)
和(?<!...)
断言
在 ES11 中,新增了(?<=...)
和(?<!...)
两个断言,用于正则表达式中的先行断言和后行断言。先行断言和后行断言可以帮助我们在匹配字符串时,只匹配满足特定条件的字符串,而不是匹配整个字符串。
先行断言和后行断言的语法如下:
(?<=...)
:表示先行断言,它要求当前位置的前面匹配指定的表达式。(?<!...)
:表示后行断言,它要求当前位置的后面不匹配指定的表达式。
示例代码:
----- --- - ------- -------- -- --- ----- ------ ---------------------------------------- -- -------- -------- -- ---- ----- ------ ---------------------------------------- -- -- --------
- 新增了
String.prototype.matchAll()
方法
ES11 新增了String.prototype.matchAll()
方法,用于在字符串中查找所有匹配指定正则表达式的子串,并返回一个迭代器。该方法返回的迭代器可以让我们逐个遍历所有匹配的子串。
示例代码:
----- --- - ------- -------- -- ------------ ----- ----- - ---------------- ----- -------- - -------------------- --- ------ ----- -- --------- - ---------------------- - -- ------- -- -------
- 新增了
RegExp.prototype.dotAll
属性
ES11 新增了RegExp.prototype.dotAll
属性,用于控制.
匹配任意字符时是否包括换行符。如果设置为true
,则.
可以匹配任意字符,包括换行符;如果设置为false
(默认值),则.
不能匹配换行符。
示例代码:
----- --- - --------------- -- ------------- ----------------------------- -- ----- ---- ---- ---- ---- ---- ---- ---- ---- ---- -- ------------ ------------------------------ -- ----- ---- ---- ---- ---- ----- ---- ---- ---- ---- ----
- 解决正则表达式中的贪婪匹配问题
在正则表达式中,*
和+
等量词默认是贪婪的,它们会匹配尽可能多的字符。ES11 中,可以通过在量词后面加上?
来解决贪婪匹配问题,使得量词变成非贪婪的。
示例代码:
----- --- - --------------------------- -- -------------- -------------------------------------- -- ---------------------------- -- --------------- --------------------------------------- -- ---------------- ---------------
总结
ES11 对正则表达式进行了一些增强和改进,包括新增了(?<=...)
和(?<!...)
断言、String.prototype.matchAll()
方法、RegExp.prototype.dotAll
属性,以及解决了贪婪匹配问题。这些新特性可以让我们更加方便地使用正则表达式,提高开发效率。在开发中,我们可以灵活使用这些特性,解决实际问题。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/65e5883f1886fbafa411c581