在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()`函数的基本讲解。