Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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 移除除img标签外的所有标签_Javascript_Regex_Replace_Html - Fatal编程技术网

Javascript 移除除img标签外的所有标签

Javascript 移除除img标签外的所有标签,javascript,regex,replace,html,Javascript,Regex,Replace,Html,我需要一个正则表达式或其他东西来删除contentEditablediv中的所有标记,但要保留带有特定类或id的img标记,我该怎么做 现在我使用: .replace(/(<\/?.*?>)/gi, ''); 。替换(/()/gi,”); 但它会删除所有标签 我做了这个: var element = document.getElementById("myDiv").children; for(var i=0; i<element .length;i++) {

我需要一个正则表达式或其他东西来删除
contentEditable
div
中的所有标记,但要保留带有特定
类或
id
img
标记,我该怎么做

现在我使用:

.replace(/(<\/?.*?>)/gi, '');
。替换(/()/gi,”);
但它会删除所有标签

我做了这个:

var element = document.getElementById("myDiv").children;
   for(var i=0; i<element .length;i++)
   {
     if(element[i].tagName != "IMG" || element[i].className != "requiredClassName")
     {
       element[i].parentNode.removeChild(element[i]);
     }
   }
var-element=document.getElementById(“myDiv”).children;
对于(var i=0;i
var editableDiv=document.getElementById(“MyEditableDiv”)
var editableDivImgs=editableDiv.getElementsByTagName(“img”)
对于(变量i=0;i
您尝试过类似的方法吗?

var editableDiv=document.getElementById(“MyEditableDiv”)
var editableDivImgs=editableDiv.getElementsByTagName(“img”)
对于(变量i=0;i
您尝试过类似的方法吗?

(如果您需要纯JS):也许更好的方法是收集所有元素,然后检查它们的类/id并执行操作。好主意是使用DOM,而不是regexp。DOM用于HTML元素操作

(或者使用jQuery):简单的代码就可以做到这一点。只需收集所有div的子类并在.each()循环中检查它们的类

例如:

$('#contentEditable').each( function( index ) {
    if( !this.is( 'img' ) && ( this.is('.someclass') || this.is('#someid') ) ) {
        this.remove();
    }
});
希望对你有帮助

附言: 使用贪婪量化时要小心
*

它将获得任何
之间的所有文本,因此如果您有下面列出的代码,则regexp
()
将收集整个代码

<div class="container">
    <div id="header">
        <div id="portalLink">
            <a class="genu" href="http://stackexchange.com">Stack Exchange</a>
        </div>
    </div>
</div>

(如果您需要纯JS):也许更好的方法是收集所有元素,然后检查它们的类/id并执行操作。好主意是使用DOM,而不是regexp。DOM用于HTML元素操作

(或者使用jQuery):简单的代码就可以做到这一点。只需收集所有div的子类并在.each()循环中检查它们的类

例如:

$('#contentEditable').each( function( index ) {
    if( !this.is( 'img' ) && ( this.is('.someclass') || this.is('#someid') ) ) {
        this.remove();
    }
});
希望对你有帮助

附言: 使用贪婪量化时要小心*

它将获得任何
之间的所有文本,因此如果您有下面列出的代码,则regexp
()
将收集整个代码

<div class="container">
    <div id="header">
        <div id="portalLink">
            <a class="genu" href="http://stackexchange.com">Stack Exchange</a>
        </div>
    </div>
</div>

提取所有IMG并将其连接成新字符串,而不是删除所有其他元素:

var regex = /<img.*?>/gmi;
var imgsOnly = '';
var img;
while( ( img = regex.exec(str) ) !== null ) {
    imgsOnly += img;
}
alert( imgsOnly );
var regex=//gmi;
var imgsOnly='';
var-img;
while((img=regex.exec(str))!==null){
imgsOnly+=img;
}
警报(仅限IMG);

提取所有IMG并将其连接成新字符串,而不是删除所有其他元素:

var regex = /<img.*?>/gmi;
var imgsOnly = '';
var img;
while( ( img = regex.exec(str) ) !== null ) {
    imgsOnly += img;
}
alert( imgsOnly );
var regex=//gmi;
var imgsOnly='';
var-img;
while((img=regex.exec(str))!==null){
imgsOnly+=img;
}
警报(仅限IMG);

您不应该对HTML使用正则表达式。HTML不是一种正则语言。您不应该对HTML使用正则表达式。HTML不是一种正则语言。谢谢,但它应该删除所有标记(例如…),但保留img标记。(如果可以保留标记内的文本),谢谢,但它应该删除所有标记(例如…),但保留img标记。(如果可以从标记中保留文本)谢谢,我想使用纯Js,使用jquery更容易,但是我需要纯Js。您可以使用childNodes并在其中循环:
for(document.getElementById(“contentEditable”).childNodes){//检查元素类型/class/id或其他东西}
谢谢,我想使用纯Js,使用jquery更简单,但我需要纯Js。您可以使用childNodes并在其中循环:
for(document.getElementById(“contentEditable”).childNodes中的元素){//检查元素类型/class/id或其他内容}
这不是一个选项,因为我还需要保留现有文本。这不是一个选项,因为我还需要保留现有文本