Javascript 正则表达式从html格式的字符串中提取文本
我当前收到html格式的响应错误。它是字符串类型Javascript 正则表达式从html格式的字符串中提取文本,javascript,regex,Javascript,Regex,我当前收到html格式的响应错误。它是字符串类型 "<!DOCTYPE html>\r\n <html> <head> <title>Data already exists</title> </head> </html>" 我想检索中的内容,因为上面的实例数据已经存在。有人能推荐一个合适的正则表达式来捕获该文本吗 请帮忙,谢谢 首先,您可以在不使用正则表达式的情况下创建一个伪元素来注入HTML:
"<!DOCTYPE html>\r\n
<html>
<head>
<title>Data already exists</title>
</head>
</html>"
我想检索中的内容,因为上面的实例数据已经存在。有人能推荐一个合适的正则表达式来捕获该文本吗
请帮忙,谢谢 首先,您可以在不使用正则表达式的情况下创建一个伪元素来注入HTML:
var s = "your_html_string";
var dummy = document.createElement("div");
dummy.innerHTML = s;
var title = dummy.getElementsByTagName("title")[0].innerText;
但如果你真的坚持使用正则表达式:
下面是两种方法的示例。在正则表达式中解析html标记的最基本原理如下 <>但是对于更复杂的东西,我会考虑使用适当的解析器。 ,可以使用DOMPARSER解析:
您可能需要为IE<9使用ActiveXObject。我们如何在jquery中使用doc变量?@DariushJafari您的意思是$doc吗?Chrome 23 Canary不使用DOMParser解析HTML。如果HTML字符串是XML有效的,则始终可以使用应用程序/XML解析进行跨浏览器解析。@Oriol如何选择文档的某些元素?$'div.cc'选择当前文档元素。您不需要使用getElementsByTagName,有一个更方便的属性。而且,可以有属性,所以正则表达式需要更复杂,用正则表达式解析HTML通常是个坏主意。@RobG:我完全同意用正则表达式解析HTML通常是个坏主意;然而,OP明确表示,这是一个遵循上述格式的响应错误。document.title将获取当前文档的标题。请注意,OP不是试图解析当前文档,而是可能来自ajax调用的特定响应消息。嗯。。。一行正则表达式,还是三行伪元素操作?一个还是三个?我知道我会选择哪一个。我也同意在一般意义上用正则表达式解析HTML不是一个好办法,但正如你所说的João,对于一个已知格式的特定情况,我认为是可以的。是的,一切都很好。OP可以使用回复文本创建一个新文档,然后使用document.title。我非常感谢大家的建议,感谢大家花时间分享知识。你们真是太棒了。既然回复已经是一个字符串,你们就不能跳过jQuery行吗?我真的很感谢大家的建议,也感谢你们花时间分享这些知识。你们真是太棒了。我真的很感谢大家的建议,谢谢你们花时间分享这些知识。你们太棒了。
var s = "your_html_string";
var title = s.match(/<title>([^<]+)<\/title>/)[1];
var text = /<(title)>(.+)<\/\1>/.exec(html).pop();
var parser=new DOMParser(),
doc=parser.parseFromString("<!DOCTYPE html><html><head><title>Data already exists</title></head></html>","text/html");
doc.title; /* "Data already exists" */