学习正则表达式



 

js正则exec()和test()的区别,RegExp.$1意义


[javascript]  view plain  copy
  1. var r = /(\d+)-(\w+)/;//RegExp.$1为第一个子匹配(表达式中括号的部分),最多是$99  
  2. var b=r.exec("2013-love-b");//返回整个匹配的字符串  
  3. alert(b+" "+RegExp.$1+"=="+RegExp.$2);  
  4.   
  5. b = r.test("1997-good");//返回是否存在满足匹配  
  6. alert(b+" "+RegExp.$1+"=="+RegExp.$2);  


上面弹出显示为:

2013-love,2013,love 2013==love

true 1997==good


关于RegExpObject.test(str)和rE.test(str)的区别

嗯,还有RegExpObject.test(str)只要str字符串有那个匹配的到的模式,就会返回真。而var rE=/^*$/的他的rE.test(str),一定要完全符合才行。


[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 2012-12-12 12:12:12  
  2. var regex = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g;    
  3.   
  4. // true  
  5. alert(regex.test("2012-12-12 12:12:12"));  
  6.   
  7. // false              
  8. alert(regex.test("2012-12-12 12:12:12"));  


执行结果已经在代码注释里了,可以看到:对于同一个正则表达式对象regex,不能重复调用:第一次返回true,第二次就返回false,很显然这种效果不是我们想要的。这是因为RegExp.test()方法,第一次从位置0开始查找,可以匹配;第二次的查找位置就不是0了,说以就不能匹配了。


解决方式挺简单:每次都让test从第0个位置开始匹配就可以了:

[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 2012-12-12 12:12:12  
  2. var regex = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g;    
  3.   
  4. // true  
  5. alert(regex.test("2012-12-12 12:12:12"));  
  6.   
  7. regex.lastIndex = 0;  
  8. // true           
  9. alert(regex.test("2012-12-12 12:12:12"));  

和java中的有一个M atcher matcher = pattern.matcher(str);matcher,find()中一样的










以后再来补充




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值