ECMAScript 2018 中的新特性:RegExp 环视断言

阅读时长 3 分钟读完

在 ECMAScript 2018 中,正则表达式(RegExp)得到了一些新的特性,其中一个非常有用的特性是环视断言(Lookaround Assertion)。

环视断言是一种特殊的正则表达式语法,它允许你在匹配字符串的时候,只匹配某些位置而不匹配实际的字符,这样可以更精确地匹配目标字符串。

环视断言的语法

环视断言有两种类型:正向环视(Positive Lookahead)和反向环视(Negative Lookahead)。它们的语法分别如下:

  • 正向环视:(?=pattern),表示后面的字符串必须匹配 pattern
  • 反向环视:(?!pattern),表示后面的字符串必须不匹配 pattern

其中 pattern 是一个正则表达式,可以包含任意的正则语法。

环视断言的特点是:它只匹配位置,不匹配实际的字符。也就是说,环视断言只是一个测试,它并不会影响到正则表达式的匹配结果。

环视断言的用途

环视断言的主要用途是在匹配字符串的时候,筛选出符合某些条件的字符串。

例如,假设我们要匹配所有以 httphttps 开头的链接,但是不包括 ftpsftp。这个时候就可以使用环视断言来实现。

正向环视的语法如下:

这个正则表达式表示:后面的字符串必须以 http://https:// 开头,并且不能以 ftp://sftp:// 开头。

反向环视的语法如下:

这个正则表达式表示:前面的字符串不能以 ftp:sftp: 结尾,并且后面的字符串必须是 //

环视断言的示例代码

下面是一个使用环视断言的示例代码,它可以匹配所有以 httphttps 开头的链接,但是不包括 ftpsftp

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

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

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

在这个示例代码中,我们使用了正向环视 /(?=https?:\/\/)(?!s?ftp:\/\/)/g 来筛选出符合条件的链接。最终得到的结果是 ["http://example.com", "https://example.com"]

总结

环视断言是 ECMAScript 2018 中新增的一项非常有用的特性,它可以帮助我们更精确地匹配目标字符串,从而提高正则表达式的效率和准确性。在实际的开发中,我们可以根据具体的需求来灵活运用环视断言,以达到更好的效果。

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

纠错
反馈