srting__API高级查找,稽查找位置也查找内容

高级查找: 即查找每个关键词内容,又查找位置
var arr=reg.exec(str);
表示:在str中查找下一个符合reg规则的关键词的内容和位置,没有就返回null

固定套路: 查找每个关键词的内容和位置
var arr=null;
while((arr=reg.exec(str))!=null){
arr: ["关键词",$1,$2,... index:位置] //返回的是一个arr数组
0
}

  原理: reg对象中有一个lastIndex=0属性,规定了exec下次开始查找的位置——不用手动维护
  exec每执行一次,做三件事:
  1.将关键词内容,放入数组第0个元素
  2.将关键词位置,放入数组的index属性
  3.自动将reg的lastIndex+关键词的长度  
    导致下次自动跳过关键词,找下一个
  强调: 也是一个一个找,每找一个新的,都会替换数组中旧的关键词。

简写: 如果只获得分组子内容,不需要完整关键词
RegExp.$n -> 可获得本次查找到的第n个分组的子内容
while(reg.exec(str)!=null){
RegExp.$n
}

例:


(1)//查找每个关键词的内容和位置
var str="No zuo no die,No can no bibi";
var reg=/no/ig;
var arr=null;
while((arr=reg.exec(str))!=null){
  console.log(arr);
  console.log(
  "在位置"+arr.index+"发现敏感词"+arr[0]);
  console.log("下次从"+reg.lastIndex+"开始");
}

 (2)如果只获得分组子内容,不需要完整关键词
var html='<a name="#top"></a><h1>Welcome</h1><ul><li><a class="curr" href="http://tmooc.cn">go to tmooc</a></li><li><a href="http://tedu.cn" target="_blank">go to tedu</a></li></ul>';
var reg=/<as+[^>]*?href="([^"]*?)"/ig;
while(reg.exec(html)!=null){
   console.log(RegExp.$1);
}

原文地址:https://www.cnblogs.com/shuimuDT/p/6122675.html