|
str.match(regexp) 方法在字符串 str 中查找 regexp 的匹配项。
它有 3 种模式:
如果 regexp 不带有修饰符 g,则它以数组的形式返回第一个匹配项,其中包含捕获组和属性 index(匹配项的位置)、input(输入字符串,等于 str):
let str = "I love JavaScript";
let result = str.match(/Java(Script)/);
alert( result[0] ); // JavaScript(完全匹配)
alert( result[1] ); // Script(第一个分组)
alert( result.length ); // 2
// 其他信息:
alert( result.index ); // 7(匹配位置)
alert( result.input ); // I love JavaScript(源字符串)
如果 regexp 带有修饰符 g,则它将返回一个包含所有匹配项的数组,但不包含捕获组和其它详细信息。
let str = "I love JavaScript";
let result = str.match(/Java(Script)/g);
alert( result[0] ); // JavaScript
alert( result.length ); // 1
如果没有匹配项,则无论是否带有修饰符 g,都将返回 null。
这是一个重要的细微差别。如果没有匹配项,我们得到的不是一个空数组,而是 null。忘记这一点很容易出错,例如:
let str = "I love JavaScript";
let result = str.match(/HTML/);
alert(result); // null
alert(result.length); // Error: Cannot read property 'length' of null
如果我们希望结果是一个数组,我们可以这样写:
let result = str.match(regexp) || [];
|
|