您的浏览器过于古老 & 陈旧。为了更好的访问体验, 请 升级你的浏览器
Ready 发布于2014年08月12日 01:43

原创 JavaScript String.match() 函数详解

132 次浏览 读完需要≈ 6 分钟

内容目录

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()函数会查找所有的匹配,返回的数组不再有indexinput属性,其中的数组元素就是所有匹配到的子字符串,形如:

  • 索引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

运行代码

  • CodePlayer技术交流群1
  • CodePlayer技术交流群2

0 条评论

撰写评论

打开导航菜单