根据关键字正则匹配HTML标签

需要匹配的字符串:

边界值<div id="tag">b</div>边界值
边界值<img id="tag"/>边界值
边界值<img id="tag" />边界值
边界值<div id='tag'>a</div>
<div id='tag' >a</div>边界值

现有需求:根据id值匹配出标签及其内容(单双)例如:<img id="tag"/>或者<div id="tag">b</div>
我的正则:<[^>]+id\=[' | "]tag[' | "].*?[^>]+>; 无法完全匹配
请帮忙修正,谢谢

阅读 3.3k
2 个回答

写的有些丑陋……不过好像匹配出来了

function regTest(reg) {
  var $htmls = [
    '<div id="tag">b</div>',
    '<img id="tag"/>gdf',
    '<img id="tag" />gdf',
    '<div id=\'tag\'>a</div>',
    '<div id=\'tag\' >a</div>'
  ]
  return rets = $htmls.map((el, i) => reg.test(el) && el.match(reg)[0])
}

var regexp = /(<[^>]+id\=('|")tag\1[^<]*\/>)|(<[^<]+id\=('|")tag\2[^<]+<\/[^>]+>)/


console.log(regTest(regexp))

表示的关系,你怎么写成了[' | "],直接['"]不就行了??

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