除了知道是否要被搜索的字符串中是否含有匹配的模式,知道模式所对应的片段的位置之外,作为开发人员,还需要额外知道更重要的信息。比如,匹配的次数(针对这个句子I have never be a real human.中ve,出现了两次),匹配片段的左端和右端分别是什么等等。因此,我们需要更加强大的方法,幸运的是,javascript提供了这些方法。
首先介绍的是,字符串实例方法match。
使用match方法,只需要遵循stringObjectInstance.match(正则表达式对象)即可。该方法将包含查找的结果作为数组返回。返回的数组在不同的浏览器下有不同的属性,在IE下,包含input,index和lastIndex属性。在chrome和Firefox下,包含input,index属性。
input、index和lastIndex。Input 属性包含整个的被查找字符串。Index 属性包含了在整个被查找字符串中匹配的子字符串的位置。lastIndex 属性包含了最后一次匹配中最后一个字符的下一个位置。切记lastIndex属性只在IE下有效果。
考虑如下代码,其中a30是一个textarea的输入框元素:
function doMatch(){
var str = "i have never bea man.";
var reg = /ve/;
var ar = str.match(reg);
var txt =document.getElementById("a30");
txt.value = ("match method: \r\n");
for(var i in ar){
txt.value +=("ar["+i+"] is "+ar[i]+" \r\n");
}
}
在chrome和Firefox下打印的结果是:
match method :
ar[0] is ve
ar[index] is 4
ar[input] is i havenever be a man.
而在IE下,打印的结果是:
match method :
ar[input] is i havenever be a man.
ar[index] is 4
ar[lastIndex] is 6 【这个是have的ve的后面那个空格的位置,ve是最后一次匹配】
ar[0]is ve