ECMAScript 2017: 正则表达式的更新

阅读时长 4 分钟读完

正则表达式是前端开发中十分重要的一部分,是处理文本的强大工具,能够帮助我们在字符串中定位和匹配特定的模式。在 ECMAScript 2017 中,正则表达式得到了一些重要的更新,这篇文章将会详细介绍这些更新的特性和使用方法。

修饰符 y 和 s

在 ECMAScript 2015 中,正则表达式已经引入了修饰符“u”,支持 Unicode 字符的匹配,这也是一个重要的改进。在 ECMAScript 2017 中,正则表达式又得到了两个新的修饰符:"y" 和 "s"。

修饰符 y "sticky" 表示从上一次匹配的结束位置处继续查找,并且只匹配从该位置开始的字符串。这与修饰符 g "global" 不同,后者匹配整个字符串,而前者只匹配第一个匹配的位置之后的字符串。如果想要多次匹配字符串,可以使用 "y" 修饰符。

示例代码:

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

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

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

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

修饰符 s "dotAll" 表示正则表达式中的点号 "." 匹配任意字符,包括换行符。这与默认的模式不同,如果要在字符串中匹配包含换行符的多行内容,需要使用 "s" 修饰符。

示例代码:

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

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

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

新的断言语法

在 ECMAScript 2017 中,还引入了新的断言语法 "?<=" 和 "?<!" 用于正则表达式的匹配。这两个断言都属于"先行断言",表示当前位置之前或之后的字符需要满足特定的条件。

"?<=" 表示当前位置之前的字符需要和特定的模式匹配,例如我们可以使用它来匹配前后都是数字的字符串。

示例代码:

"?<!" 表示当前位置之前的字符需要不匹配特定的模式,例如我们可以使用它来匹配前后都不是数字的字符串。

示例代码:

总结

在 ECMAScript 2017 中,正则表达式得到了一些重要的更新,包括修饰符 "y" 和 "s",以及新的断言语法 "?<=" 和 "?<!”。这些特性使得正则表达式在处理字符串方面更加强大可靠,为前端开发提供了更多工具和可能性。

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

纠错
反馈