【问题标题】:body tag class ReGex身体标签类正则表达式
【发布时间】:2014-05-02 16:00:51
【问题描述】:

这是一个奇怪的要求。我正在使用 jQuery 获取 AJAX 请求一些整页的 html 内容。一旦我在一个对象 var 中捕获了内容,我想获取捕获的内容的 body 标签类并用它替换当前的 DOM body 类。

由于内容在 var 中并且没有加载到 DOM 中,所以 jQuery 对它毫无用处。我能想到的最好的工具是正则表达式。

我在网上找了几个小时,一无所获。

这是我能想到的最好的代码,但它不起作用......

var data = '<html class="please_god_no" id="shit"><body id="id_no" class="test22">test2 class="test1" "test3"<div id="bad" class="test5 test6">test4</div> </body></html>'; 
var arr = data.match(/<body class=("[\w\d]*")\sid=("[\w\d]*")>([\w\d]*)</body>/);
alert(arr);

我只想要我不需要的类或任何其他属性。任何有关如何找到答案的帮助都会非常有帮助。

【问题讨论】:

  • 正则表达式可能因为/body 中的/ 而失败 - 你试过\/body 吗?
  • 错误...不行。返回空值;

标签: javascript jquery html ajax regex


【解决方案1】:

嗯,这比我想象的要难,事实证明在处理 body/html 元素时事情变得很棘手。需要像这样处理创建的html 元素:

var s = '<html class="please_god_no"><body id="id_no" class="test22">test2 class="test1" "test3"<div id="bad" class="test5 test6">test4</div> </body></html>'; 
var htmlObject = document.createElement('html');
htmlObject.innerHTML = s;
var klass = htmlObject.querySelector("body").className;
document.querySelector('body').className = klass;

JSFiddle example here

这一切都非常耗时。可能有更好的方法来做到这一点,你为什么不用你想要的类来渲染body?如果做不到这一点,为什么你不能只通过 AJAX 检索你想要的类?考虑在未来的版本中重构您的应用。

【讨论】:

  • 当内容中包含&lt;html&gt;&lt;body&gt; 并且他们想要的课程在&lt;body&gt; 上时,这是否真的有效?
  • @jfriend00 如果你能想出一个不起作用的例子,我会解决上述问题。
  • 在控制台中,是的。我想我可以做一个小提琴。
  • 我刚试了一下,还是不行。我读到我在尝试使用 jQuery 解析 html 时会遇到不同的问题,因为不同的浏览器将内容加载到 innerHtml 对象的方式,特别是在 html、head 和 body 标记方面。我认为这就是正在发生的事情。
  • 回答你的问题,是的,需要页面上的数据,内容是通过基于 body 类的 CSS 格式化的。我调用页面但不知道如何在没有正文类的情况下格式化内容。令人沮丧的是,身体课程就在那儿,以纯文本形式存在,但我无法将其拉出。必须有一个正则表达式方法......
猜你喜欢
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-22
  • 2021-09-30
  • 1970-01-01
相关资源
最近更新 更多