在前端开发中,正则表达式是必不可少的技术之一。它是一种文本模式,用于匹配字符串中的模式。ECMAScript 2021 在正则表达式方面做出了一些改进,本文将详细介绍这些改进。
1. 新的正则表达式标志
ECMAScript 2021 引入了一些新的正则表达式标志,这些标志可以让开发者更方便地编写正则表达式。
1.1 s 标志
在过去的版本中,.
只匹配除了换行符外的任意字符。而在 ECMAScript 2021 中引入了 s
标志,它可以让 .
匹配任意字符,包括换行符。
例如,当我们想匹配下面的字符串时,可以使用 s
标志:
const str = `Line 1 Line 2`; const regex = /Line.+2/; const regex2 = /Line.+2/s; console.log(regex.test(str)); // false console.log(regex2.test(str)); // true
1.2 x 标志
在正则表达式中,空白字符(包括空格、制表符和换行符)通常被忽略。但在某些情况下,我们需要保留空白字符。此时,可以使用 x
标志。
例如,当我们想匹配下面的字符串时,可以使用 x
标志:
const str = 'A B C D E'; const regex = /ABCD/; const regex2 = /A # Match A\nB # Match B\nC # Match C\nD # Match D/x; console.log(regex.test(str)); // true console.log(regex2.test(str)); // true
2. 新的正则表达式方法
ECMAScript 2021 还引入了一些新的正则表达式方法,这些方法可以让开发者更方便地使用正则表达式。
2.1 RegExp.prototype.testAll()
RegExp.prototype.testAll()
方法可以匹配字符串中所有的结果,并返回一个迭代器。
例如,当我们想匹配下面的字符串中所有的数字时,可以使用 testAll()
方法:
-- -------------------- ---- ------- ----- --- - ---- --- ----- ----- ----- - ------- --- ------ ----- -- ------------------- - ------------------- - -- --- -- --- -- --- -- ---
2.2 String.prototype.replaceAll()
String.prototype.replaceAll()
方法可以替换字符串中所有匹配的结果。
例如,当我们想把下面的字符串中所有的空格替换成下划线时,可以使用 replaceAll()
方法:
const str = 'A B C D E'; const regex = /\s/g; console.log(str.replaceAll(regex, '_')); // A_B_C_D_E
3. 新的正则表达式语法
ECMAScript 2021 还引入了一些新的正则表达式语法,这些语法可以让开发者更方便地编写正则表达式。
3.1 ?<name> 语法
在 ECMAScript 2021 中,?<name>
语法可以为捕获组命名。
例如,在下面的字符串中,我们想匹配名字和年龄:
const str = 'My name is Peter, I am 25 years old.'; const regex = /My name is (?<name>\w+), I am (?<age>\d+) years old./; const match = str.match(regex); console.log(match.groups.name); // Peter console.log(match.groups.age); // 25
3.2 ?? 语法
在正则表达式中,?
后跟着其他字符表示非贪婪匹配。而在 ECMAScript 2021 中,??
语法可以表示最短匹配。
例如,在下面的字符串中,我们想匹配最短的双引号之间的内容:
-- -------------------- ---- ------- ----- --- - -------- ------- --- ------- -------------- ----- ----- - --------- --- ------ ----- -- -------------------- - ---------------------- - -- --- -- ------- ------- -- ------- ------------
结论
ECMAScript 2021 引入的新的正则表达式标志、方法和语法在正则表达式方面做出了一些改进,可以让我们更方便地使用和编写正则表达式。我们在实际开发中可以灵活运用这些新特性,更高效地完成任务。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f38344e1e8e99bfaf7cd4b