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'))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题