【发布时间】:2020-03-20 17:49:13
【问题描述】:
我有问题。我目前正在寻找一种从字符串中删除任何 HTML 元素的方法。但有两个条件:
- 元素的内容应该保留
- 不应删除具有已定义类的特殊元素
我已经尝试了很多东西,并查看了很多关于 SO 的问题/答案,但不幸的是,我无法真正找出任何答案。不幸的是,这远远超出了我的能力。但我想知道这样的事情是如何工作的。
我尝试过的问题/答案: How to strip HTML tags from string in JavaScript?, Strip HTML from Text JavaScript
所以当我有一个这样的字符串时:
You have to pay <div class="keep-this">$200</div> per <span class="date">month</span> for your <span class="vehicle">car</span>
剥离后应该是这样的:
You have to pay <div class="keep-this">$200</div> per month for your car
我实际上尝试过以下事情:
jQuery(document).ready(function ($) {
let string = 'You have to pay <div class="keep-this">$200</div> per <span class="date">month</span> for your <span class="vehicle">car</span>';
console.log(string);
function removeHTMLfromString(string) {
let tmp = document.createElement("DIV");
tmp.innerHTML = string;
return tmp.textContent || tmp.innerText || "";
}
console.log(removeHTMLfromString(string));
console.log(string.replace(/<[^>]*>?/gm, ''));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
我还尝试了一个正则表达式工具来查看删除了什么,但不幸的是,我在这里也没有取得太大进展:
如果有人可以帮助我完成这项任务,我会很高兴。非常感谢!
更新
也许有办法只用一个正则表达式?如果是,在使用此正则表达式时如何使用特殊类排除我的元素:/<\/?[^>]+(>|$)/g?
【问题讨论】:
-
给定字符串的输出是什么?我的意思是
You have to pay的文字在哪里? -
@SajeebAhamed 该死的,我忘了添加它。抱歉这个问题。
-
每个问题都有解决方案。我已经更新了我的答案。希望能帮到你。
标签: javascript jquery html regex