ECMAScript 2018 新特性:正则表达式的 Regex

阅读时长 3 分钟读完

正则表达式一直是前端开发中不可或缺的重要技能,它能够帮助我们更方便地处理字符串匹配和替换操作。在 ECMAScript 2018 中,正则表达式得到了一些令人激动的新特性,我们来一起了解一下。

Unicode 属性转义

在旧版 ECMAScript 中,我们只能使用字符集来匹配某些类别的字符,例如 [a-z] 匹配小写字母。而在 ECMAScript 2018 中,我们可以使用 Unicode 属性转义 \p{} 来更方便地匹配 Unicode 属性。

例如,要匹配所有带有点的字符可以这样写:

我们使用 \p{P} 来匹配任何 Unicode 属性为标点符号的字符。在例子中,我们匹配到了字符串中所有的点。

还有许多其他的 Unicode 属性可以使用,例如 \p{Letter} 匹配任何字母字符,\p{Number} 匹配任何数字字符等等。

后行断言

在 ECMAScript 2018 中,我们可以使用后行断言来更方便地匹配某些字符,而不用考虑它们前方的字符。

例如,如果我们想要匹配某个字符串后面紧跟着数字的情况,我们可以这样写:

在这里,我们使用后行断言 (?<=foo) 来匹配数字前面的 foo

命名捕获组

在 ECMAScript 2018 中,我们可以使用命名捕获组来更方便地获取匹配到的字符串。

例如,如果我们想匹配并捕获某个字符串中的日期和时间信息,我们可以这样写:

-- -------------------- ---- -------
----- --- - ------ -- ---------- -----------
----- ------ - --------------------------------------------- --------------------------------------------------

----- ----- - ------------------

--------------------------
-- ------- 
-
  ----- -------
  ------ -----
  ---- -----
  ----- -----
  ------- -----
  ------- ----
-
--

在这里,我们使用命名捕获组 (?<name>exp) 来获取匹配到的时间信息。结果会被储存在 match.groups 中,我们可以轻松地获取这些信息。

负向环视

在 ECMAScript 2018 中,我们可以使用负向环视来更方便地排除一些字符串。

例如,如果我们想匹配某个字符串,但是排除掉其中某个特定的字符,我们可以这样写:

在这里,我们使用负向环视 (?<!o) 来排除包含 o 的情况。结果只匹配到了 l 字符。

总结

以上是 ECMAScript 2018 中正则表达式的新特性:Unicode 属性转义、后行断言、命名捕获组和负向环视。这些新特性使得正则表达式更加强大和灵活,可以让我们更方便地处理字符串操作。

如果你想深入地学习正则表达式,这些新特性也值得你去尝试和掌握。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c7278b10032fedd390a45b

纠错
反馈