JavaScript 正则表达式 match()

摘要:在本教程中,您将了解 JavaScript 字符串 match() 方法,用于将字符串与正则表达式匹配。

要了解 match() 方法的工作原理以及如何有效使用它,您应该了解 正则表达式 的基本知识。

JavaScript match() 方法简介

字符串 match() 方法将 字符串正则表达式 匹配。

str.match(regexp);
Code language: JavaScript (javascript)

如果 regexp 不是正则表达式,则 match() 将使用 RegExp() 构造函数将其转换为正则表达式。match() 返回一个 数组,具体取决于正则表达式是否使用全局标志 (g) 标志。

  • 如果 regexp 使用 g 标志,则 match() 方法将返回一个包含所有匹配项的数组。结果不包含捕获组。
  • 如果 regexp 不使用 g 标志,则 match() 方法将返回第一个匹配项及其相关的捕获组。匹配结果与 RegExp.exec() 的结果相同,只是多了几个属性。有关详细信息,请参见下面的示例。

如果未找到任何匹配项,则 match() 返回 null

JavaScript 正则表达式 match() 方法

让我们来看一些使用 match() 方法的示例。

1) 使用具有全局标志的表达式使用 JavaScript 正则表达式 match() 方法

以下示例显示了如何使用具有全局标志 (g) 的 match() 方法。它返回一个匹配项数组。

let str = "Price: $5–$10";
let result = str.match(/\$\d+/g);
console.log(result);
Code language: JavaScript (javascript)

输出

["$5", "$10"]
Code language: JavaScript (javascript)

在此示例中,match() 搜索 $ 符号后的任何数字。

2) 使用没有全局标志的表达式使用 JavaScript 正则表达式 match() 方法

以下示例说明了如何使用没有全局标志的正则表达式使用 match() 方法。它返回一个包含第一个匹配项的数组,以及其他属性。

let str = "Price: $5–$10";
let result = str.match(/\$\d+/);
console.log(result);
Code language: JavaScript (javascript)

输出

附加属性为

  • index:是找到匹配项的索引。
  • input:搜索字符串的副本。
  • groups:命名的捕获组对象的键值分别为名称和捕获组。在此示例中,它是 undefined,因为我们没有定义任何命名捕获组。

3) 使用 JavaScript 正则表达式 match() 方法和命名捕获组

以下示例显示了如何使用具有命名 捕获组match() 方法。它将 "yellow" 捕获到名为 "color" 的组中。

let str = 'I like yellow color palette!';

let re = /(?<color>yellow) color/;
let result = str.match(re);

console.log(result);
Code language: JavaScript (javascript)

输出: 

JavaScript String match with named capturing group

在本教程中,您学习了如何使用 JavaScript 字符串 match() 方法将字符串与正则表达式匹配。

本教程是否有用?