JS中的正则表达式入门(6)
var result = reg.exec(str);
document.write('index:'+result.index+'<br />'
+'input:'+result.input+'<br />'
);
for(i=0;i<result.length;i++){
document.write('result['+i+']:'+result[i]+'<br />')
}
}马上来实验一下:
var reg = /\w/;
var str='bbs.bblueidea.com';
execReg(reg,str);结果如下:
index:0
input:bbs.bblueidea.com
result[0]:b
输入字符串为bbs.bblueidea.com;
匹配的b在原字符串的索引是0。
正则的匹配结果为一个,b;
var reg = /(\w)(\w)(.+)/;
var str='bbs.bblueidea.com';
execReg(reg,str);结果为:
index:0
input:bbs.bblueidea.com
result[0]:bbs.bblueidea.com
result[1]:b
result[2]:b
result[3]:s.bblueidea.com
由上面两个例子可见,返回对象[0]就是整个正则表达式所匹配的内容。后续的元素则是各个子正则表达式的匹配内容。
exec方法对正则表达式的更新
exec方法在返回结果对象的同时,还可能会更新原来的正则表达式,这就要看正则表达式是否设置了g修饰符。先来看两个例子吧:
var reg = /b/;
var str = 'bbs.blueidea.com';
execReg(reg,str);
execReg(reg,str);结果如下:
index:0
input:bbs.blueidea.com
result[0]:b
index:0
input:bbs.blueidea.com
result[0]:b
也就是说,两次匹配的结果完全一样,从索引可以看出来,匹配的都是字符串首的b字符。
下面看看设置了g的正则表达式表现如何:
var reg = /b/g;
var str = 'bbs.blueidea.com';
execReg(reg,str);
execReg(reg,str);结果如下:
index:0
input:bbs.blueidea.com
result[0]:b
index:1
input:bbs.blueidea.com
result[0]:b
可以看得出来,第二次匹配的是字符串的字符串的第二个b。这也就是g修饰符的作用了,下面来看exec是如何区别对待g和非g正则表达式的。
如果正则表达式没有设置g,那么exec方法不会对正则表达式有任何的影响,如果设置了g,那么exec执行之后会更新正则表达式的lastIndex属性,表示本次匹配后,所匹配字符串的下一个字符的索引,下一次再用这个正则表达式匹配字符串的时候就会从上次的lastIndex属性开始匹配,也就是上面两个例子结果不同的原因了。
test方法
test方法仅仅检查是否能够匹配str,并且返回布尔值以表示是否成功。同样建立一个简单的测试函数:
function testReg(reg,str){
alert(reg.test(str));
}实例1
var reg = /b/;
var str = 'bbs.blueidea.com';
testReg(reg,str);成功,输出true。
实例2
var reg = /9/;
var str = 'bbs.blueidea.com';
testReg(reg,str);失败,返回false。
使用字符串的方法执行正则表达式
match方法
形式:str.match(reg);
与正则表达式的exec方法类似,该方法同样返回一个类似数组的对象,也有input和index属性。我们定义如下一个函数用来测试:
function matchReg(reg,str){
var result = str.match(reg);
相关新闻>>
- 发表评论
-
- 最新评论 更多>>