LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 350|回复: 0

str.match(regexp)

[复制链接]
发表于 2024-1-28 23:42:59 | 显示全部楼层 |阅读模式
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) || [];

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表