javascript - 关于正则表达式exec方法全局模式匹配下有个问题

查看:74
本文介绍了javascript - 关于正则表达式exec方法全局模式匹配下有个问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var str="1 plus 2 equal 3";
x=str.match(/\d+/g);

y=/\d+/g.exec(str);
document.write(x+"<br/>");//1,2,3
document.write(y+"<br/>");//1
y=/\d+/g.exec(str);
document.write(y+"<br/>");//1??应该是2??
y=/\d+/g.exec(str);
document.write(y+"<br/>");//1??应该是3啊??

解决方案

var str="1 plus 2 equal 3";
rex = /\d+/g;
y=rex.exec(str);  // 1
console.log(y);
console.log(rex.lastIndex);
y=rex.exec(str);  // 2
console.log(y);
console.log(rex.lastIndex);
y=rex.exec(str);  // 3
console.log(y);
console.log(rex.lastIndex);

要这样写,你那种写法每次都是一个新的RegExp对象,所以三次调用都是取的第一个匹配结果

这篇关于javascript - 关于正则表达式exec方法全局模式匹配下有个问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆