ES9 新特性:matched 和 groups
在 ES9 中,新增了两个正则表达式的属性:matched 和 groups。这两个属性主要用于在匹配过程中获取更多的信息,让正则表达式更加灵活强大。
matched
matched 属性用于获取正则表达式匹配到的字符串。在之前的版本中,我们通常都是使用 test 和 exec 方法来判断某个字符串是否匹配正则表达式,但这些方法只能返回 true 或 false 或者一个匹配结果。而 matched 属性的出现,为我们提供了一个更加直接有效的方式来获取匹配到的字符串。
matched 属性可以通过 $& 来访问,它会返回正则表达式匹配到的子字符串。比如下面这个例子:
let str = 'hello world'; let result = str.match(/hello/); console.log(result.matched); // 'hello'
上面的代码中,我们先使用 match 方法匹配了字符串中的 hello 子串,并且将结果赋值给 result。然后通过 result.matched,就可以直接获取到匹配到的字符串 hello。
groups
groups 属性则用于获取正则表达式匹配到的所有分组(也就是括号括起来的子串)。在之前的版本中,获取分组的方式比较麻烦,需要通过 exec 方法多次执行,或者在正则表达式中使用 ? 的方式来定义一个分组,然后通过 groupName 属性来获取。而 groups 属性的出现,可以更加方便地访问所有分组。
groups 属性可以通过 $ 或者 [groupName] 来访问,它会返回一个包含所有分组的对象。比如下面这个例子:
let str = 'hello world'; let result = str.match(/(hello) (world)/); console.log(result.groups); // {hello: 'hello', world: 'world'}
上面的代码中,我们定义了两个分组,分别是 hello 和 world。然后通过 match 方法匹配了字符串,并且将结果赋值给 result。最后通过 result.groups,就可以直接获取到一个包含所有分组的对象,其中属性名对应着分组的名称,属性值对应着分组匹配到的字符串。
总结
ES9 新特性中,matched 和 groups 属性的出现,让我们在使用正则表达式进行字符串匹配过程中更加方便地获取匹配到的字符串和所有分组。同时,它也让正则表达式在实际应用中的灵活性和强大性得到了进一步提升。
代码示例
下面是一个完整的代码示例,演示了 matched 和 groups 属性的基本用法:
let str = 'hello world'; let result = str.match(/(hello) (world)/); console.log(result.matched); // 'hello world' console.log(result.groups); // {hello: 'hello', world: 'world'}
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65326f617d4982a6eb52d1e5