正则表达式在前端开发中经常被使用,它可以帮助我们快速匹配、搜索和替换字符串。在 ES11 中,新增了一些处理正则表达式的方法,让我们更加方便地操作它们。
String.prototype.matchAll()
matchAll()
方法返回一个迭代器,它包含了所有匹配正则表达式的结果。这个方法可以用来获取一个字符串中所有匹配的子字符串。
const str = 'abc123def456ghi'; const regex = /\d+/g; for (const match of str.matchAll(regex)) { console.log(match[0]); // 123, 456 }
RegExp.prototype.dotAll
dotAll
是一个布尔类型的属性,用来指定正则表达式中的 .
是否匹配任何字符(包括换行符)。
const regex = /foo.bar/s; const str = 'foo\nbar'; console.log(regex.test(str)); // true
在上面的例子中,我们使用了 s
标志来开启 dotAll
属性,这使得 .
可以匹配到换行符。
RegExp.prototype.namedGroups
namedGroups
属性返回一个对象,包含了正则表达式中所有命名捕获组的名称及其对应的索引。
const regex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/; console.log(regex.namedGroups); // { year: 1, month: 2, day: 3 }
在上面的例子中,我们使用了 (?<name>...)
的语法来定义命名捕获组,然后通过 namedGroups
属性来获取它们的名称和索引。
RegExp.prototype.matchAll()
matchAll()
方法与 String.prototype.matchAll()
方法类似,但是它是正则表达式对象的方法,用来获取所有匹配的结果。
const regex = /\d+/g; const str = 'abc123def456ghi'; const matches = regex.matchAll(str); for (const match of matches) { console.log(match[0]); // 123, 456 }
总结
ES11 中新增的正则表达式方法让我们更加方便地操作它们,包括获取所有匹配结果、匹配任何字符、获取命名捕获组等。在实际开发中,我们可以根据需要灵活地使用这些方法来提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/656d6cdcd2f5e1655d5b141a