Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式从html格式的字符串中提取文本_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式从html格式的字符串中提取文本

Javascript 正则表达式从html格式的字符串中提取文本,javascript,regex,Javascript,Regex,我当前收到html格式的响应错误。它是字符串类型 "<!DOCTYPE html>\r\n <html> <head> <title>Data already exists</title> </head> </html>" 我想检索中的内容,因为上面的实例数据已经存在。有人能推荐一个合适的正则表达式来捕获该文本吗 请帮忙,谢谢 首先,您可以在不使用正则表达式的情况下创建一个伪元素来注入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" */