js正则表达式之match函数讲解


在JavaScript中,`match()` 函数是字符串对象的一个方法,它用于检索字符串中与正则表达式相匹配的结果。如果没有找到任何匹配项,则返回 `null`。否则,它会返回一个数组,其中包含了匹配的结果;如果正则表达式包含全局标志(`g`),则返回包含所有匹配项的数组,但不会返回捕获组的信息(除非使用了非捕获组)。

### 基本用法


let str = "For more information, visit Mozilla Developer Network or Google.";
let regexp = /(mozilla|google)\b/i;
let matchArray = str.match(regexp);

if (matchArray) {
    console.log("Found " + matchArray[0]); // 输出匹配的项
    if (matchArray.length > 1) {
        // 如果有捕获组,且匹配成功,会包含捕获组的信息
        console.log("Also found " + matchArray[1]);
    }
} else {
    console.log("No match found!");
}

### 全局匹配

当正则表达式包含全局标志(`g`)时,`match()` 方法会返回所有匹配的项,但不会返回捕获组的信息(除非使用了非捕获组)。


let str = "apple, banana, cherry";
let regexp = /(?:[^,]+)/g; // 使用非捕获组(?:...)
let matches = str.match(regexp);

console.log(matches); // 输出: ["apple", " banana", " cherry"]

注意:在非全局匹配模式下,返回的数组第一个元素是匹配的字符串,而其余的元素则是与正则表达式中的捕获组相匹配的文本(如果有的话)。在全局模式下,返回的数组仅包含匹配的字符串。

### 注意事项

- 如果正则表达式不包含 `g` 标志,返回的数组包含两个对象属性:`index` 和 `input`,分别表示匹配项在字符串中的位置和原始字符串。但在全局匹配模式下,这两个属性不会被返回。

- 使用正则表达式字面量时,确保转义所有特殊字符,或者使用正则表达式构造函数(`new RegExp()`),特别是当正则表达式来源于变量或用户输入时。

- 当使用正则表达式构造函数时,需要双重转义反斜杠(`\`),因为在字符串中反斜杠是一个转义字符。


let re = new RegExp("\\d+", "g"); // 匹配一个或多个数字

以上就是JavaScript中`match()`函数的基本讲解。