在 JavaScript 的正则表达式中,我们常常会使用 capturing group 来获取并存储匹配到的内容,以备后续使用。ES11 提供了一种新的 capturing group 格式,叫做 named capturing groups,可以帮助开发者更加清晰地阅读和编写复杂的正则表达式。
什么是 Named Capturing Groups
Named capturing groups 的语法格式类似于普通的 capturing group,但是它可以给 group 指定一个拥有名字的 identifier。语法如下:
(?<name>regex)
这里的 name
就是该 group 的名称,regex
是这个 group 所要匹配的正则表达式。
和普通的 capturing group 相比,named capturing groups 的最大优点就是在正则表达式中可以根据名称更加直观地引用 group,显著提高了可读性。而且,当开发者需要修改表达式的时候,也不用再修改后续引用该 group 的地方。
使用 Named Capturing Groups
我们可以通过 RegExp.prototype.exec
函数返回的结果数组,找到 named capturing groups 返回的数据。对于每一个 named capturing group,我们可以在结果数组中找到两个元素:
- 数组下标为 named capturing group 的名称时,其值为匹配到的字符串;
- 数组下标为 named capturing group 的序号时,其值为匹配到的字符串。
这里是示例代码:
-- -------------------- ---- ------- ----- -- - ----------------------------------------------- ----- ------ - ---------------------- ----------------------- -- ------ -------------------------------- -- ------ ----------------------- -- ---- --------------------------------- -- ---- ----------------------- -- ---- ------------------------------- -- ----
上述代码中,我们使用了 named capturing groups 来匹配日期格式的字符串。并使用 RegExp.prototype.exec
函数返回的结果数组来演示如何获取 named capturing groups。我们分别通过下标和 named capturing groups 的名称来获取匹配的字符串并打印到控制台上,输出结果如下:
"2022" "2022" "01" "01" "01" "01"
总结
named capturing groups 是 ES11 新特性之一,提供了更加灵活而直观的方式来处理 capturing group,受到广泛的欢迎和使用。开发者在平时的正则表达式的使用中,可以多用 named capturing groups 来进行表达式的书写,不仅可以提高代码的可读性,还有助于减少代码维护中的工作量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646a1994968c7c53b09d6a72