Javascript正则表达式匹配字符串,但仅显示文本
我有一个HTML元素,里面有一个标题,如下所示。页面名称 如何创建正则表达式来搜索元素,但只返回其中的文本、页面名称?此正则表达式:Javascript正则表达式匹配字符串,但仅显示文本,javascript,html,regex,Javascript,Html,Regex,我有一个HTML元素,里面有一个标题,如下所示。页面名称 如何创建正则表达式来搜索元素,但只返回其中的文本、页面名称?此正则表达式: /<details>(.*?)<\/details>/ $1正则表达式变量将包含名称。此正则表达式: /<details>(.*?)<\/details>/ $1 regex变量将包含名称。您不应该使用regex解析HTML。尤其是当您使用的环境为您提供了DOM解析器时。只要使用它: var docpart =
/<details>(.*?)<\/details>/
$1正则表达式变量将包含名称。此正则表达式:
/<details>(.*?)<\/details>/
$1 regex变量将包含名称。您不应该使用regex解析HTML。尤其是当您使用的环境为您提供了DOM解析器时。只要使用它:
var docpart = document.createElement("div"),
details, text = '';
docpart.innerHTML = "your <details>…HTML string…</details> here";
details = docpart.getElementsByTagName("details");
if (details.length > 0) {
text = details[0].textContent;
}
alert(text); // "…HTML string…"
因为您在评论中提到了jQuery,所以事情变得简单了。以下是上述jQuery的等价物:
var inputHTML = "your <details>…HTML string…</details> here";
var details = $("<div>", {html: inputHTML}).find("details").text();
永远不要使用正则表达式来解析HTML。尤其是当您使用的环境为您提供了DOM解析器时。只要使用它:
var docpart = document.createElement("div"),
details, text = '';
docpart.innerHTML = "your <details>…HTML string…</details> here";
details = docpart.getElementsByTagName("details");
if (details.length > 0) {
text = details[0].textContent;
}
alert(text); // "…HTML string…"
因为您在评论中提到了jQuery,所以事情变得简单了。以下是上述jQuery的等价物:
var inputHTML = "your <details>…HTML string…</details> here";
var details = $("<div>", {html: inputHTML}).find("details").text();
请详细说明一下。。。您是将HTML放在字符串中,还是它是DOM的一部分?@Felix-HTML是字符串的一部分。Im过滤内容,并使用return this.nodeType==8;返回已注释的内容;。请详细说明一下。。。您是将HTML放在字符串中,还是它是DOM的一部分?@Felix-HTML是字符串的一部分。Im过滤内容,并使用return this.nodeType==8;返回已注释的内容;。这与字符串匹配,但不删除标记。换一根绳子最容易吗?@CNOTETEGR8:放手吧。Regex不是用于此目的的合适工具。在javascript中使用类似的东西:myStr.replace/*?/,$1此匹配字符串,但不删除标记。换一根绳子最容易吗?@CNOTETEGR8:放手吧。Regex不是适合这个的工具。在javascript中使用类似的东西:myStr.replace/*?/,$1我认为这与我检索字符串的方式不匹配。我就此事向@Felix Kling发表了评论。@CNOTETEGR8:你怎么会这么想?不管字符串是否来自注释,只要试试就行了。我对Javascript非常陌生,我尝试用jQuery获取元素,如下所示,jQuery'details'。text;我没有成功。我只是假设任何实现这一点的方法都有几行代码,所以我认为正则表达式是最好的。@cnotethegre8:regex不是最好的,原因有几个。首先,它通常无法可靠地解析像HTML这样的结构化语言,除了非常非常狭窄的情况,而且您尝试覆盖的角落越多,它就越复杂,甚至无法维护。其次,它不理解像&hellip;如上所述,而在DOM中这样做可以透明地处理它们。查看我的更改答案。我认为这与我检索字符串的方式不匹配。我就此事向@Felix Kling发表了评论。@CNOTETEGR8:你怎么会这么想?不管字符串是否来自注释,只要试试就行了。我对Javascript非常陌生,我尝试用jQuery获取元素,如下所示,jQuery'details'。text;我没有成功。我只是假设任何实现这一点的方法都有几行代码,所以我认为正则表达式是最好的。@cnotethegre8:regex不是最好的,原因有几个。首先,它通常无法可靠地解析像HTML这样的结构化语言,除了非常非常狭窄的情况,而且您尝试覆盖的角落越多,它就越复杂,甚至无法维护。其次,它不理解像&hellip;如上所述,而在DOM中这样做可以透明地处理它们。请看我更改的答案。