indexOf(),lastIndexOf(),index 和 lastIndex的区分

  1. indexOf() 和 lastIndexOf() 是数组实例的两个位置方法,都是返回要查找项在数组的位置。都接收两个参数,一个是要查找的项,和可选参数:查找起点位置的索引。它们的区别是查找的方向,前者从数组的开头向后查找,后者从数组的末尾向前查找。若没有找到则返回 -1。
    需注意:在比较第一个参数与数组中的每一项是使用全等操作符(===),也就是不会转换操作数,必须严格相等。

  2. index 和 lastIndex 是属性。index 是 RegExp 对象的exec() 方法返回的数组(Array的实例)的额外属性(还有一个额外属性是input),index 表示匹配项在字符串中的位置。

  3. 而 lastIndex 是 RegExp 实例的属性,表示开始搜索下一个匹配项的字符位置。这是一个可读可写的整数类型属性。

  4. 当调用 exec() 的正则表达式对象没有修饰符 g 时,lastIndex 的值始终保持不变即为0,从头开始搜索,即下一次搜索字符串时得到相同的匹配项,不能查找到所有的匹配项。

  5. 当调用 exec() 的正则表达式对象有修饰符 g 时,多次对同一个正则表达式,字符串调用 exec() ,每次 lastIndex 都会增加,即下次从当前匹配项后开始查找。如果 exec() 没有发现任何匹配结果,它会将lastIndex重置为0。

  6. 测试代码

    <script>
      var text = "app,cat,bat,sat,fat";
      
      var pattern = /.at/;
      var matches = pattern.exec(text);
      alert(matches.index);  //4
      alert(matches[0]);  //cat
      alert(pattern.lastIndex);  //0

      matches = pattern.exec(text);
      alert(matches.index);  //4
      alert(matches[0]);  //cat
      alert(pattern.lastIndex);  //0

      var pattern2 = /.at/g;
      var matches = pattern2.exec(text);
      alert(matches.index);  //4
      alert(matches[0]);  //cat
      alert(pattern2.lastIndex);  //7

      matches = pattern2.exec(text);
      alert(matches.index);  //8
      alert(matches[0]);  //bat
      alert(pattern2.lastIndex);  //11
    </script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值