了解 ES8 中使用正则断言

在 ES8 中,正则表达式得到了很大的改进,其中一个重要的改进就是正则断言。正则断言是一种特殊的正则表达式,它可以在匹配字符串的时候,只匹配某些条件下的字符串。

正则断言的定义

正则断言是一个零宽度的匹配,它只匹配一个位置而不是一个字符。正则断言可以分为正向断言和负向断言两种。

正向断言是指匹配满足条件的字符串,例如 (?=exp) 表示匹配 exp 前面的位置,但是不匹配 exp 本身。例如,正则表达式 /a(?=b)/ 表示匹配一个字符 a,但是这个字符 a 必须后面紧跟着一个字符 b,例如 ab。

负向断言是指匹配不满足条件的字符串,例如 (?!exp) 表示匹配不在 exp 前面的位置,但是不匹配 exp 本身。例如,正则表达式 /a(?!b)/ 表示匹配一个字符 a,但是这个字符 a 不能后面紧跟着一个字符 b,例如 ac。

正则断言的应用

正则断言可以在很多场景下使用,例如:

匹配字符串中的数字

正则表达式 /(\d+)(?=[A-Z])/g 可以匹配一个字符串中大写字母前面的数字。例如,对于字符串 "Hello123World456",这个正则表达式会匹配到数字 123 和 456。

匹配字符串中的单词

正则表达式 /(?<=\bhello\s)\w+/i 可以匹配一个字符串中以 "hello " 开头的单词。例如,对于字符串 "hello world, hello javascript",这个正则表达式会匹配到单词 "world" 和 "javascript"。

匹配字符串中的 URL

正则表达式 /(?<=https?:\/\/)[\w.]+/i 可以匹配一个字符串中以 http 或 https 开头的 URL。例如,对于字符串 "Visit my website at https://www.example.com",这个正则表达式会匹配到 "www.example.com"。

总结

正则断言是一种非常有用的正则表达式,它可以帮助我们更精确地匹配字符串。在使用正则断言时,需要注意正向断言和负向断言的区别,以及如何正确地使用断言条件。在实际开发中,可以根据具体的需求来灵活运用正则断言,提高代码的效率和可读性。

示例代码

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

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

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

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65d6b4bc1886fbafa44596f4