正则表达式之 lookahead 和 lookbehind

阅读时长 5 分钟读完

正则表达式(regular expression) 是一种用来描述字符串匹配模式的强大工具。它可以在前端开发中帮助我们快速、高效地操作文本数据。在正则表达式中,lookaheadlookbehind 是比较常用的正则表达式的技巧。它们可以让我们在匹配字符串时更加灵活。

什么是 lookahead?

lookahead 是一种基于正则表达式的技术,它允许我们在进行字符串匹配时,查找到接下来的字符,但是却不消耗其字符,也就是说不将其算入匹配结果。lookahead 方法分为两类,分别是 positive lookaheadnegative lookahead

  • positive lookahead:正向预查,意味着匹配时必须满足预查中的表达式,但实际匹配的结果并不包含预查表达式,匹配结果只包括预查表达式后的部分。
  • negative lookahead:负向预查,意味着匹配时必须不满足预查中的表达式,实际的匹配结果同样不包含预查表达式。

下面是两个示例,用于说明 lookahead 方法的作用:

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

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

什么是 lookbehind?

lookahead 方法不同的是,lookbehind 是一种反向预查技巧,它可以在字符串匹配时,在当前匹配字符的左边检查并匹配字符。但它与 lookahead 方法也一样,不计入匹配结果中。

lookbehind 包括 positive lookbehindnegative lookbehind

  • positive lookbehind: 正向预查,表示左侧必须匹配预定字符(或字符集)。
  • negative lookbehind: 负向预查,表示左侧不能匹配预定字符(或字符集)。

下面是两个示例,用于说明 lookbehind 方法的作用:

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

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

具体使用场景

lookaheadlookbehind 技巧并不常用,但同样是非常实用的正则表达式技术手段。在实际开发过程中,这两种技术经常用于处理一些数据预处理和数据分组的问题。

下面是两个典型的正则表达式实例:

1. 字符串中间替换

将字符串中间的字符替换成 *,并保留前三位和后三位字符。以下示例代码展示了当我们想要保密手机号码时,可以通过进行 lookbehindlookahead 实现:

2. 数据分组

正则表达式也可以用于区分不同的数据段,同时保留指定内容。

以下示例代码展示如何根据中括号的括号内容来提取其中的数据:

总结

总体来说,lookaheadlookbehind 技术主要发挥作用在字符串匹配的前、后缀预处理和数据分组方面。随着前端开发的不断发展,正则表达式渐渐成为前端开发者在日常工作中必备的工具之一,学习和使用这两种技术技巧,可以帮助我们更加迅速、高效地操作和处理文本数据。

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

纠错
反馈