前瞻

摘要:在本教程中,您将学习有关 JavaScript 正则表达式前瞻的信息,以匹配 X,但仅当它后面跟着 Y 时。

JavaScript 正则表达式前瞻简介

正则表达式 中,前瞻允许您匹配 X,但仅当它后面跟着 Y 时。

以下是前瞻的语法

X(?=Y)Code language: JavaScript (javascript)

在此语法中,正则表达式引擎搜索 X,并且仅在它后面跟着 Y 时才匹配。

例如,假设您有以下字符串

const s = '1 car is 15 feet long';Code language: JavaScript (javascript)

并且您希望匹配数字 15 后面跟着一个空格和文字字符串 feet,而不是数字 1。为此,您可以在正则表达式中使用前瞻

/\d+(?=\s*feet)/Code language: JavaScript (javascript)

在此正则表达式中

  • \d+ 匹配一个或多个数字
  • ?= 是前瞻语法
  • \s* 匹配零个或多个空格
  • feet 匹配文字字符串 feet

以下代码使用上述模式来匹配后面跟着零个或多个空格和文字字符串 feet 的数字

const s = '1 car is 15 feet long';
const pattern = /\d+(?=\s*feet)/;

const match = s.match(pattern);
console.log(match);Code language: JavaScript (javascript)

输出

15Code language: PHP (php)

正则表达式多个前瞻

在正则表达式中使用以下语法,可以具有多个前瞻

 X(?=Y)(?=Z)Code language: JavaScript (javascript)

在此语法中,正则表达式引擎执行以下步骤

  1. 搜索 X
  2. 检查 Y 是否紧随 X 之后,如果不是,则跳过。
  3. 检查 Z 是否也紧随 Y 之后;如果不是,则跳过。
  4. 如果两个测试都通过,则将 X 返回为匹配项;否则,搜索下一个匹配项。

因此,X(?=Y)(?=Z) 同时匹配后面跟着 YZX

正则表达式负前瞻

假设您想匹配数字 1,但不想匹配以下字符串中的数字 15

const s = '1 car is 15 feet long';Code language: JavaScript (javascript)

为此,您使用负前瞻。以下是负前瞻的语法

X(?!Y)Code language: JavaScript (javascript)

在此语法中,正则表达式引擎仅在 X 后面不跟着 Y 时才匹配 X

以下示例说明了如何使用负前瞻

const s = '1 car is 15 feet long';
const pattern = /\d+(?!\s*feet)/;

const match = s.match(pattern);
console.log(match);Code language: JavaScript (javascript)

输出

1Code language: plaintext (plaintext)

摘要

  • 正则表达式前瞻 X(?=Y) 仅在 X 后面跟着 Y 时才匹配 X
  • 负正则表达式前瞻 X(?!Y) 仅在 X 后面不跟着 Y 时才匹配 X
本教程是否有用?