String对象的match⽅法
String对象的match⽅法
RegExp对象的exec⽅法和String对象的match⽅法⽤法⼗分相似。
定义与语法
【定义】
match() ⽅法可在字符串内检索指定的值,或到⼀个或多个正则表达式的匹配。
【语法】
stringObject.match(searchvalue)
stringObject.match(regexp)
【返回值】存放匹配结果的数组。
以下分3种情况讲解:
1)输⼊参数为普通字符串;
2)输⼊参数为⾮全局正则表达式;
3)输⼊参数为全部正则表达式。
输⼊为普通字符串
var str=“web2.0 2.0”;
var searchValue=“e”;
console.log(str.match(searchValue));
结果如下:
第⼀项:匹配到的字符串;
属性index:匹配字符串所在的位置;
属性input:输⼊的字符串
其实,在输⼊参数为普通字符串时,match⽅法与indexOf⽅法的作⽤类似,只是indexOf返回的是匹配字符串所在的位置,match返回的是匹配的字符串(可以通过index属性获得位置)。但如果只是要获得匹配的字符串就没有意义了,因为结果就是输⼊参数,所以⼀般match更多地⽤于在字符串中匹配模式。
输⼊为⾮全局RegExp对象
var str=“web2.0 2.0”;
var pattern=/(\w+)(\d).(\d)/;//没有全局标志g
console.log(str.match(pattern));
结果如下:
发现结果与exec⽅法的结果完全相同。即:
第⼀项:web2.0,与整个模式匹配的结果,也就是与/(\w+)(\d).(\d)/匹配的结果;
第⼆项:web,与第⼀个匹配组匹配的结果,也就是与(\w+)匹配的结果;
第三项:2,与第⼆个匹配组匹配的结果,也就是与(\d)匹配的结果;
第四项:0,与第三个匹配组匹配的结果,也就是与(\d)(第⼆个(\d))匹配的结果;
属性⼀:index:0,匹配项在字符串中的位置,也就是数组第⼀项的匹配字符串的位置。
属性⼆:input:“web2.0 2.0”,也就是输⼊参数str。
所以,当输⼊参数为⾮全局正则表达式时,match⽅法与exec⽅法结果⼀样,均为第⼀个匹配项的信息(包括捕获组匹配到的⼦字符串)。
输⼊为全局RegExp对象
var str=“web2.0 2.0”;
var pattern=/(\w+)(\d).(\d)/g;//有全局标志g
console.log(str.match(pattern));
结果如下:
可以发现,结果包含两项,分别为第⼀个匹配项和第⼆个匹配项,不包括捕获组的匹配结果,也没有index和input属性。
总结
index与match举例讲解
1)match⽅法为String对象的⽅法,输⼊参数可以为普通字符串或RegExp对象;
2)输⼊为普通字符串时,结果为⼀个数组,包含第⼀个匹配到的字符串;数组有两个属性,分别为匹配字符串的位置index和输⼊参数input;
3)输⼊为⾮全局RegExp对象时,结果为⼀个数组,包含第⼀个匹配项的信息,格式为[与整个模式匹配的字符串,与第⼀个捕获组匹配的字符串,与第⼆个捕获组匹配的字符串,……],数组有两个属性,分别为匹配得到的字符串的位置index和输⼊参数字符串input;
4)输⼊为全局RegExp对象时,结果为⼀个数组,包含所有匹配的结果,但不包含捕获组匹配的⼦字符串、index属性和input属性。
exec()和match()异同
1)exec()为RegExp对象的⽅法,输⼊参数为字符串;match()为String对象的⽅法,输⼊参数为字符串或者RegExp对象;
2)当RegExp对象没有全局标志g时,exec()和match()⽅法返回结果相同,为⼀个包含第⼀个匹配项的信息的数组,格式为[与整个模式匹配的字符串,与第⼀个捕获组匹配的字符串,与第⼆个捕获组匹配的字符串,……],数组有两个属性,分别为匹配得到的字符串的位置index和输⼊参数字符串input;
3)当RegExp对象有全局标志g时,exec()⽅法每次执⾏时是从上次检索的终点开始检索,返回当前检索到的⼀个匹配项信息;match()⽅法执⾏的结果为⼀个包含所有匹配项的数组,不包括捕获组匹配的⼦字符串、index属性和input属性。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。