Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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替换函数<;span>;及</span>;。。。包罗万象_Javascript_Jquery_Html_Regex - Fatal编程技术网

使用带有正则表达式的javascript替换函数<;span>;及</span>;。。。包罗万象

使用带有正则表达式的javascript替换函数<;span>;及</span>;。。。包罗万象,javascript,jquery,html,regex,Javascript,Jquery,Html,Regex,如何使用正则表达式替换,如中所示?(此正则表达式理想地匹配或,包括范围内的所有内容) 我尝试了各种各样的例子,例如: .replace(/</?span>/,"") .replace(/</?span>/g,"") .replace(/[</?span>]/,"") .replace(/[</?span>]/g,"") 。替换(/,“”) .replace(//g,“”) .替换(/[]/,“”) .替换(/[]/g,“”) 在Javasc

如何使用正则表达式替换
,如中所示?(此正则表达式理想地匹配
,包括范围内的所有内容)

我尝试了各种各样的例子,例如:

.replace(/</?span>/,"")

.replace(/</?span>/g,"")

.replace(/[</?span>]/,"")

.replace(/[</?span>]/g,"")
。替换(/,“”)
.replace(//g,“”)
.替换(/[]/,“”)
.替换(/[]/g,“”)

在Javascript中,您需要转义
/
,因为JS使用
/
作为正则表达式分隔符,并添加
[^>]*
以匹配
中的任何内容:

.replace(/<\/?span[^>]*>/ig, "")
。替换(/]*>/ig,”)

在Javascript中,您需要转义
/
,因为JS使用
/
作为正则表达式分隔符,并添加
[^>]*
以匹配
中的任何内容:

.replace(/<\/?span[^>]*>/ig, "")
。替换(/]*>/ig,”)

我看到您在问题中包含了
jQuery
标记,因此我假设您可以使用jQuery。您可以使用jQuery来解决这个问题

$('span').each(function(){
   $(this).replaceWith($(this).text());
});
这将查找每个
span
元素,该元素可以是以下任一元素:

<span>test</span>
<span class="has-a-class" id="also-an-id">a span with any number of attributes</span>

我看到您在问题中包含了
jQuery
标记,因此我假设您可以使用jQuery。您可以使用jQuery来解决这个问题

$('span').each(function(){
   $(this).replaceWith($(this).text());
});
这将查找每个
span
元素,该元素可以是以下任一元素:

<span>test</span>
<span class="has-a-class" id="also-an-id">a span with any number of attributes</span>
.replace(//gi,”)
*
之后添加
,使其非贪婪匹配。

。替换(//gi,”)

*
之后添加
,使其成为非贪婪匹配。

代码的问题是正则表达式在第一个
/
处结束

.replace(/</?span>/,"")
           ^--Thinks this is the closing /
。替换(/,“”)
^--我认为这是结束/
它需要逃脱

.replace(/<\/?span>/,"")
           ^ Use \ to escape it
。替换(/,“”)
^使用\来转义它

但是,为什么要使用正则表达式来删除元素,而嵌套的元素会给您带来问题呢。使用DOM的强大功能,不要依赖正则表达式

函数removeSpans(htmlStr){
var wrapper=document.createElement(“div”);
wrapper.innerHTML=htmlStr;
var span=wrapper.getElementsByTagName(“span”);
while(跨度、长度){
span[0].parentNode.removeChild(span[0]);
}
返回wrapper.innerHTML;
}
var myHTML=“这是一个范围一些文本这是另一个范围”;
var cleanedHTML=removeSpans(myHTML);
document.getElementById(“out”).innerHTML=cleanedHTML

代码的问题是正则表达式在第一个
/

.replace(/</?span>/,"")
           ^--Thinks this is the closing /
。替换(/,“”)
^--我认为这是结束/
它需要逃脱

.replace(/<\/?span>/,"")
           ^ Use \ to escape it
。替换(/,“”)
^使用\来转义它

但是,为什么要使用正则表达式来删除元素,而嵌套的元素会给您带来问题呢。使用DOM的强大功能,不要依赖正则表达式

函数removeSpans(htmlStr){
var wrapper=document.createElement(“div”);
wrapper.innerHTML=htmlStr;
var span=wrapper.getElementsByTagName(“span”);
while(跨度、长度){
span[0].parentNode.removeChild(span[0]);
}
返回wrapper.innerHTML;
}
var myHTML=“这是一个范围一些文本这是另一个范围”;
var cleanedHTML=removeSpans(myHTML);
document.getElementById(“out”).innerHTML=cleanedHTML


您链接的问题有一个非常合适的答案。@Katana314我同意,假设此人知道如何首先将
.match()
与regex一起使用,为什么首先使用regex?HTML是否指定用于该页面?删除节点比搞乱HTML解析更容易、更安全。这里需要注意的是,如果适用,不建议使用正则表达式解析HTML@sln:那肯定行不通。你链接的问题有一个非常合适的答案。@Katana314我同意,假设这个人知道如何首先将
.match()
与regex一起使用为什么首先使用regex?HTML是否指定用于该页面?删除节点比搞乱HTML解析更容易、更安全。这里需要注意的是,如果适用,不建议使用正则表达式解析HTML@sln:那肯定不行。需要添加
g
switch-too需要添加
g
switch-tooat不会有什么不同。@squint-是的,但你不应该告诉他为什么吗?而且,原因是相对的。@sln:他不应该告诉我为什么会有不同吗?这里是的,因为它与
[^>]*
匹配。就我个人而言,我保持非贪婪作为一种实践,:]@elaijuh-这是一个棘手的权衡,如果它是开放式的,引擎会扫描最后一个
然后反向工作,如果它不是基于后续子表达式的开放式,它仍然可以以贪婪的方式工作。这不会有什么区别。@squint-是的,但是你不应该告诉他为什么吗?而且,原因是相对的。@sln:他不应该告诉我为什么会有不同吗?这里是的,因为它与
[^>]*
匹配。就我个人而言,我将保持非贪婪作为一种实践,:]@elaijuh-这是一个棘手的权衡,如果它是开放式的,那么引擎会扫描最后一个
,如果它不是基于后续子表达式的开放式,则会反向工作,它仍然可能以贪婪的方式行事。感谢您发布正确的方式清理标签。感谢您发布正确的方式清理标签。