正则表达式是前端开发中常用的工具,可以帮助我们在字符串中查找、替换、匹配等操作。而 ES11 中新增的一些特性,可以让我们更好地使用正则表达式,提高开发效率。
新增的特性
1. RegExp Match Indices
在 ES11 中,正则表达式的 match() 方法返回一个数组,包含了匹配到的字符串和匹配到的位置信息。这个位置信息是一个对象,包含了匹配到的字符串在原字符串中的起始位置和结束位置。
示例代码:
const text = "Hello, my name is John."; const regex = /John/; const match = text.match(regex); console.log(match); // ["John", index: 17, input: "Hello, my name is John.", groups: undefined] console.log(match.index); // 17
2. Named Capture Groups
在 ES11 中,我们可以给正则表达式的捕获组(capture group)命名。这样就可以更方便地引用捕获组中的内容,而不用再通过索引来获取。
示例代码:
const regex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/; const match = regex.exec("2022-01-01"); console.log(match.groups.year); // "2022" console.log(match.groups.month); // "01" console.log(match.groups.day); // "01"
3. Lookbehind Assertions
在 ES11 中,我们可以使用 lookbehind 断言(lookbehind assertion)来匹配前面的文本,而不会将其包含在结果中。
示例代码:
const regex = /(?<=Hello, )\w+/; const match = "Hello, John".match(regex); console.log(match); // ["John"]
4. Unicode Property Escapes
在 ES11 中,我们可以使用 Unicode 属性转义(Unicode property escapes)来匹配特定的 Unicode 字符。
示例代码:
const regex = /\p{Script=Greek}/u; const match = "Γειά σου κόσμε".match(regex); console.log(match); // ["Γ", index: 0, input: "Γειά σου κόσμε", groups: undefined]
总结
ES11 中新增的正则表达式特性,可以让我们更好地使用正则表达式,提高开发效率。我们可以使用 match() 方法获取匹配到的位置信息,使用 named capture groups 来引用捕获组中的内容,使用 lookbehind assertions 来匹配前面的文本,使用 Unicode property escapes 来匹配特定的 Unicode 字符。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65bddf16add4f0e0ff77b326