为了账号安全,请及时绑定邮箱和手机立即绑定

js正则表达式match全局匹配结果为什么不全?

js正则表达式match全局匹配结果为什么不全?

var str = "12332aa438aaf";var regExp=/([0-9a-z]){2}/g;str.match(regExp);的结果是["12", "33", "2a", "a4", "38", "aa"];现在我的问题是,为什么23 , 32 , aa , 43 , 8a,这些数字都符合正则规则,再返回的结果里却没有这些结果?如何才能把符合这个正则规则的所有匹配项都显示出来呢?
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

js 的String对象有一个match方法,可以传递一个正则表达式,范围所有匹配的值,比如:
var s = "abcabdabfacfabg";
var reg = /ab/g; //最后一个g表示要全局匹配
console.log(s.match(reg).toString());//结果ab,ab,ab,ab

查看完整回答
反对 回复 2018-11-02
  • weixin_慕UI5568240
    weixin_慕UI5568240
    因为你用了全局匹配g,全局匹配每一次匹配都会有一个lastIndex记录上一次匹配的位置,就像你匹配到了ab之后lastIndex就变为2了,下一次匹配就是从3的位置开始匹配即ca而不会出现bc这个结果
  • 1 回答
  • 0 关注
  • 1770 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信