JavaScript 正则如何提取div标签里的内容?

如有个div标签,如何用正则提取里面的内容
'<div>hello world</div>'

阅读 23.1k
9 个回答

html不是正则语言,所以使用正则表达式分析比较麻烦,建议采用楼上的建议使用jquery的html()方法。

let ele = '<div>this is content.</div>';
$(ele).html();
divStr.match(/<div>(.+)<\/div>/))[1]

JS 可以试试 jQuery,正则是给自己找麻烦

  1. 正则

let matches = html.match(/<div>(.+)<\/div>/g))
if (matches !== null) {
    let content = matches[1];
    console.log(content)
}
  1. DOM API

let div = document.querySelector('#div');
let content = div.innerText;
console.log(content);

想要 做什么 为什么用正则呢

if(/<div>(.+)<\/div>/.test('<div>hello world</div>')){
    console.log(RegExp.$1)
}

或者

/<div>(.+)<\/div>/.exec('<div>hello world</div>')[1]
var content = [];document.body.innerText.replace(/<div>(.*?)<\/div>/g, function($0, $1) {
    content.push($1);
    return $0;
})

如果是爬虫的话,推荐使用cheerio,这中能够像jQuery一样使用,提供多种选择器。

首先,这个问题问的不好。

  1. 什么样的 div, 大可以贴出来看看嘛?

  2. 需要提取哪些内容,大可以写出来分享下嘛?
    因为很有可能,你现在问的,和你真正想要问的,有比较可观的差距。所以,问问题的时候,最好列出你的 context。

好了,回到正题,用正则(工具)提取div的内容。

正则表达式并不能提取 div 的内容

这个时候,我们要使用 dom 的api。dom api - 教程

因为内容可能包含 html 标签,所以你可能需要酌情处理一下。

使用正则表达式筛选你要的数据

拿到 div 的内容之后,可以着手编写你的正则表达式,正则表达式-教程

就这些。

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