ES9 中的正则表达式(RegExp)相关的更新
前言
在 ES6 中,对于正则表达式(RegExp)的支持已经趋于完善,但是随着业务需求的不断增加,我们对正则表达式的需求也越来越高,因此在 ES9 中,对正则表达式进行了升级,增加了一些非常实用的新特性,本文将介绍 ES9 中正则表达式相关的更新。
零宽度断言
ES9 中新增了一种非常重要的特性——零宽度断言(zero-width assertions),它可以匹配某个字符前面或者后面的位置,而不是实际的字符本身。
通俗点来讲就是在不获取正确的匹配的情况下设置匹配的条件,这样就不会改变实际的匹配结果。
顺序肯定先行断言
顺序肯定先行断言(Positive Lookahead)是一种零宽度断言,常用于寻找一个前缀,比如匹配邮件地址的用户名部分。
语法:
-----------
示例代码:
-- ---------------- ------------------------------------- ------- -- ---- ------------------------------------- ------- -- ---- ----------------------------------------- -- -----
注释:
该正则表达式通过零宽度断言判断“good”后面紧跟的字符是不是字母、数字或下划线。因此,第一、二个测试用例均返回 true,而第三个测试用例返回 false。
顺序否定先行断言
顺序否定先行断言(Negative Lookahead)与顺序肯定先行断言类似,但是匹配条件与之相反。
语法:
-----------
示例代码:
-- ----------------- --------------------- ---------------- ------- -- ---- --------------------- ---------------- ------- -- -----
注释:
第一个测试用例符合匹配条件,返回 true,而第二个测试用例不符合匹配条件,返回 false。
顺序肯定后行断言
顺序肯定后行断言(Positive Lookbehind)是一种零宽度断言,常用于寻找一个后缀,比如匹配时间字符串中的小时。
语法:
------------
示例代码:
-- ----------- ------------------------------------------- -- ---- ------------------------------------------- -- ---- ------------------------------------------ -- -----
注释:
正则表达式通过逆序前行断言判断“:”前面是不是数字。因此,第一、二个测试用例均符合条件,返回 true,而第三个测试用例不符合条件,返回 false。
顺序否定后行断言
顺序否定后行断言(Negative Lookbehind)与顺序肯定后行断言类似,但是匹配条件与之相反。
语法:
------------
示例代码:
-- ------------------- ------------------------------------------- -- ---- ------------------------------------------- -- ---- ------------------------------------------ -- -----
注释:
正则表达式通过逆序前行断言判断“:”前面不是数字。因此,第一、二个测试用例均符合条件,返回 true,而第三个测试用例不符合条件,返回 false。
其他更新内容
正则表达式命名捕获组
在 ES9 中,正则表达式引入了一个新概念,即命名捕获组,可以给捕获到的子串命名,方便后续对其进行操作。
语法:
----------------
示例代码:
-- ---------- ----- ------- - ----------------------------------------------- ----- ----- - --------------------------- -------------------------------- -- ---- --------------------------------- -- -- ------------------------------- -- --
注释:
正则表达式通过命名捕获组以每个部分的名字来捕获,这大大增加了代码的可读性,使开发更加便利。
Unicode 字符转义
在 ES6 中,Unicode 字符序列已经获得了很好的支持,而在 ES9 中,正则表达式也新增了关于 Unicode 的支持,可以使用 Unicode 字符转义来匹配 Unicode 字符。
语法:
-----------------
示例代码:
-- -- ------- ----- ---------------------------------- -- ---- ---------------------------------- -- ----- ---------------------------------- -- ----
注释:
使用 Unicode 字符转义,可以非常方便地进行 Unicode 字符匹配,造福于多语言开发的需求。
总结
ES9 中的正则表达式是一个非常实用的更新,引入了零宽度断言、正则表达式命名捕获组、Unicode 字符转义等一系列实用的功能,这些功能的引入,极大的扩展了正则表达式的能力,提高了正则表达式的可读性和可维护性。因此,在编写复杂的前端页面时,我们可以更加自主地应用这些新特性,让代码更加简洁、高效。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/652c9cfe7d4982a6ebe43f5d