理解正则表达式的全局匹配——不可重入性

理解正则表达式的全局匹配

理解全局匹配:

https://blog.csdn.net/aitangyong/article/details/51470854

解决 js相同的正则多次调用test()返回的值却不同的问题:

https://blog.csdn.net/qq_30100043/article/details/80092012

问题描述

// 2012-12-12 12:12:12
var regex = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g;  
console.log(regex.lastIndex); // 0
// true
alert(regex.test("2012-12-12 12:12:12"));
console.log(regex.lastIndex); // 19
// false			
alert(regex.test("2012-12-12 12:12:12"));

解决方案1

// 2012-12-12 12:12:12
var regex = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g;  
 
// true
alert(regex.test("2012-12-12 12:12:12"));
 
regex.lastIndex = 0;
// true			
alert(regex.test("2012-12-12 12:12:12"));

解决方案2

删除正则表达式中代表全局的 ‘g’。

结论: 对于全局的正则表达式对象,不能重复调用。regex.test第一次从0开始查找,可以匹配,第二次就不是从0(从19)开始了,所以不能匹配。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值