用于div标签的JavaScript RegEx

5 javascript regex

我持有的HTML网页JavaScript变量和因安装,我需要之间抽取的一切<div id="LiveArea">,并</div>从使用JavaScript变量.

任何帮助是极大的赞赏.

小智 9

var html = "<stuff><div id=\"LiveArea\">hello stackoverflow!</div></stuff>";

var matches = html.match(/<div\s+id="LiveArea">[\S\s]*?<\/div>/gi);
var matches = matches[0].replace(/(<\/?[^>]+>)/gi, ''); // Strip HTML tags?

alert(matches);
Run Code Online (Sandbox Code Playgroud)


Jer*_*ten 5

这应该可以做到:

pattern = /<div id="LiveArea">(.*?)<\/div>/;
matches = your_html_var.match(pattern);
the_string = matches[0];

document.write(the_string);
Run Code Online (Sandbox Code Playgroud)


Pet*_*ley 5

仅使用正则表达式是不可能实现这一点的,除非该 div 内的 HTML 不包含其他 div。因为像 Jeremy 这样的模式会发生的情况是,它将匹配第一个结束 div 标签,而该标签不一定是 div#LiveArea 元素的结束标签。

如果您可以控制源 HTML,则可以插入一条注释,您可以使用该注释来匹配正确的“结束”位置。

还有其他仅使用 javascript 的选项,但它们都非常笨拙或 hacky

  1. 将隐藏元素的innerHTML设置为等于该内容字符串,然后使用mmattax的解决方案提取您需要的innerHTML。但是您可能必须在此处执行第二步并设置超时,以便让浏览器有时间评估这个新 HTML 并将其公开给 DOM。
  2. 实际上解析内容,在遇到它们时跟踪打开/关闭 div,这样您就知道何时处于正确的</div>标签。


mma*_*tax 1

当您说“保存 html 页面的 Javascript 变量”时,我不确定我是否理解您的意思,但是如果您需要在这样的 div 之间提取 HTML,您可以使用该元素的 innerHTML 属性。


var e = document.getElementById('LiveArea');
if(e) alert(e.innerHTML);