内容目录
match()
函数用于使用指定的正则表达式模式在当前字符串中进行匹配查找,并返回数组形式的查找结果。
该函数属于String
对象,所有主流浏览器均支持该函数。
语法
stringObject.match( regExp )
参数
参数 | 描述 |
---|---|
regExp | String类型包含正则表达式模式的RegExp对象的实例。也可以是包含正则表达式模式的变量名或字符串。 |
如果参数regExp
不是正则表达式对象(RegExp),而是字符串类型,则match()
先将该字符串传递给RegExp的构造函数,将其转换为一个RegExp对象。
返回值
match()
方法的返回值为Array类型,其返回数组的成员取决于指定的正则表达式模式是否设有全局标志g
。
1、如果参数regExp
没有全局标志g
,则match()
函数只查找第一个匹配,并返回包含查找结果的数组,该数组对象包含如下成员:
- 索引
0
:存放第一个匹配的子字符串。- 属性
index
:匹配文本在字符串中的起始索引位置。- 属性
input
:整个字符串对象(stringObject
)。
在 IE 6 ~ IE 8 中,该数组还具有额外的lastIndex
属性,用于存储匹配文本最后一个字符的下一个位置。
2、如果参数regExp
设有全局标志g
,则match()
函数会查找所有的匹配,返回的数组不再有index
和input
属性,其中的数组元素就是所有匹配到的子字符串,形如:
- 索引
0
:存放第一个匹配的子字符串(如果存在的话)。- 索引
1
:存放第二个匹配的子字符串(如果存在的话)。- ……
- 索引
N-1
:存放第N个匹配的字符串(如果存在的话)。
match()
函数如果没有查找到任何匹配,则返回null
。
示例&说明
// 遍历数组对象的所有成员
function printArray(array){
if(array != null){
for(var i in array){
document.writeln( i + "=" + array[i] + "<br>" );
}
}else{
document.write(null + "<br>");
}
}
var str = "Code123Player34Code456 https://codeplayer.vip";
// 不带g的正则表达式(查找第一个2位数字)
printArray( str.match(/\d{2}/) );
/*
0=12
index=4
input=Code123Player34Code456 https://codeplayer.vip
*/
// 该字符串等同于上一个正则表达式
printArray( str.match("\\d{2}") );
/*
0=12
index=4
input=Code123Player34Code456 https://codeplayer.vip
*/
// 查找不到匹配返回null
printArray( str.match(/James/) );
// null
// 带全局标志g的正则表达式(搜索所有的两位数字)
printArray( str.match(/\d{2}/g) );
/*
0=12
1=34
2=45
3=36
*/
// 带全局标志g,但查找不到匹配,也返回null
printArray( str.match(/CodePlayer/g) ); // null
0 条评论
撰写评论