js正则repalce怎么匹配到连续数字

新手上路,请多包涵

怎么匹配到连续数字

  const data = '<img src="tpl/wap/images/emoji/emoji (12).png">';
  var reg = /<img[^>]*src[=\"\'\s]+[../|..\\]*[^\.]*\/[^\.]+(\d+)[^\.]+\.[^\"\']+[\"\']?[^>]*>/ig;
  let str  = data.replace(reg, (s, $1) => {
      console.log($1); //输出是2,而不是12 
  });
  //怎么匹配到连续数字,求助大神
阅读 2.6k
2 个回答

可以为(\d+)前面的[^\.]加上懒惰模式,或是在里面也排除下数字

/<img[^>]*src[=\"\'\s]+[../|..\\]*[^\.]*\/[^\.]+?(\d+)[^\.]+.*>/ig

或者 

/<img[^>]*src[=\"\'\s]+[../|..\\]*[^\.]*\/[^\.\d]+?(\d+)[^\.]+.*>/ig

你如果要匹配连续数字,那么(\d+)应该换为(\d{2,})

/<img[^>]*src[=\"\'\s]+[../|..\\]*[^\.]*\/[^\.]+?(\d{2,})[^\.]+.*>/ig
function demo (str) {
  return str.match(/\d+/g)
}

console.log(demo('abc12d34d56'))
推荐问题