javascript中match函数的用法小结


在JavaScript中,`String.prototype.match()` 方法用于检索字符串中与正则表达式相匹配的结果。如果没有找到任何匹配项,则返回 `null`。否则,它返回一个数组,其中存放了匹配的结果。如果正则表达式不包含 `g` 标志(全局搜索),返回的数组包含整个匹配项和任何括号中的捕获组。如果正则表达式包含 `g` 标志,则返回的数组包含字符串中的所有匹配项,但不包含捕获组。

### 基本用法


let str = 'For more information, visit Mozilla Developer Network or Mozilla Wiki.';
let regexp = /(mozilla)(?:\s+(?:developer\s+network|wiki))/i;
let match = str.match(regexp);

if (match !== null) {
    console.log(`Found ${match[1]}!`);
    // 输出: Found mozilla!
    // match[0] 包含整个匹配项
    // match[1] 是第一个捕获组的内容
}

### 使用全局标志 `g`


let str = 'apple banana apple cherry';
let regexp = /apple/gi;
let matches = str.match(regexp);

console.log(matches);
// 输出: ['apple', 'apple']
// 注意:没有捕获组信息,只返回匹配项

### 如果没有匹配项


let str = 'No fruit here';
let regexp = /apple/i;
let match = str.match(regexp);

if (match === null) {
    console.log('No match found.');
}
// 输出: No match found.

### 注意事项

- 如果正则表达式不包含 `g` 标志,返回的数组的第一个元素存放的是匹配文本,而其余的元素是与正则表达式的子表达式匹配的文本。

- 如果正则表达式包含 `g` 标志,则返回的数组包含字符串中的所有匹配项,但不包含子匹配项或捕获的组。

- 如果没有找到任何匹配项,`match()` 方法将返回 `null`。

- 使用 `match()` 方法时,如果正则表达式是字面量形式且没有使用变量,则可以使用正则表达式字面量。如果正则表达式来自变量或计算得出,则必须使用 `RegExp` 构造函数来创建正则表达式对象。