JS中的正则表达式入门(6)

来源:未知 责任编辑:责任编辑 发表时间:2015-09-16 20:04 点击:

 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);

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Gb2312转utf-8编码的方法(vbs+js)
  • 如何使用Ajax技术开发Web应用程序(1)
  • js跳转路径问题
  • JavaScript模仿桌面窗口
  • 2011年度最佳 jQuery 插件
  • jquery学习笔记---jqGrid学习笔记 完整整理
  • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
  • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
  • 我是如何去了解jquery的(六),案例之幻灯片轮换
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1