删除除 img 标签之外的所有标签
我需要正则表达式或其他内容来删除 contentEditable
div
中的所有标记,但保留具有特定 class< 的
img
标记/code> 或 id
,我该怎么做?
现在我使用:
.replace(/(<\/?.*?>)/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]);
}
}
I need an regular expression or something else to remove all tags in a contentEditable
div
, but to keep img
tag with specific class
or id
, how I can do this?
Now I use:
.replace(/(<\/?.*?>)/gi, '');
but it removes all tags.
I made this :
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]);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
(如果您需要纯 JS ):也许更好的方法是收集所有元素,然后检查它们的类/id 并执行操作。好主意是使用 DOM,而不是正则表达式。 DOM 用于 HTML 元素操作。
(或使用 jQuery ):简单的代码就可以做到这一点。只需收集所有 div 的子级并在 .each() 循环中检查它们的类即可;
例如:
希望对您有帮助。
附:
使用贪婪量化时要小心
.*
它将获取任何
<; 之间的所有文本。 >
,因此,如果您有下面列出的代码,则 regexp(<\/?.*?>)
将收集整个代码。( if you need plain JS ): Maybe the better way is to collect all elements then after check their class/id and perform action. Good idea is to use DOM, not regexp. DOM is for HTML elements manipulation.
( or use jQuery ): Simple code can do that thing. Just collect all div's children and check their class in .each() loop;
For e.g.:
Hope it helps you.
P.S.:
Be careful when you are using greedy quantification
.*
It will get all text between any
< >
, so if you have code listed below regexp(<\/?.*?>)
will collect whole code.你尝试过类似的事情吗?
have you tried something like that?
不是删除所有其他元素,而是提取所有 imgs 并将它们连接成一个新字符串:
Instead of removing all other elements extract all imgs and concatenate them into a new string: