使用内容Javascript剥离HTML标记

时间:2014-10-06 09:40:34

标签: javascript

我尝试了许多事情:

var StrippedString = OriginalString.replace(/(<([^>]+)>)/ig,"");
var StrippedString = OriginalString.replace(/<(?:.|\n)*?>/gm, '');

Input : Hello there i am an input string<p> with html content </p>.
Output : Hello there i am an input string with html content .

但它只会剥离html标签,留下标签的内容。我想要的是从字符串中删除任何HTML代码。

Input : Hello there i am an input string<p> with html content </p>.

Expected Output : Hello there i am an input string.

1 个答案:

答案 0 :(得分:0)

你似乎正走在正确的道路上。但是你只是检查第一个结束标签。尝试使用此正则表达式检查两个结束标记:

 <[^>]+>[^>]+>

这将匹配:

你好,我是一个输入字符串<p> with html content </p>

使用你的js看起来像:

var StrippedString = OriginalString.replace(/<[^>]+>[^>]+>/g,"");

我不认为你在这种情况下需要忽略这个案例,因为你没有为任何字符指定任何案例


编辑:

用户torazaburo指出,该表达式不适用于嵌套标签。如果你想要一个能够使用嵌套标签的正则表达式,你需要开始使用匹配的组:

<([A-z]+).+\/\1>

括号是&#34;匹配组1&#34;当我们用\1回忆匹配的组时,重复括号内匹配的内容。

这将匹配:

Lorem <span class="s1">ipsum <a href="http://stackoverflow.com">dolor sit amet</a>, consectetur adipiscing elit</span>。 Nulla et imperdiet nisl,et scelerisque augue。

它也将正确匹配:

Lorem <span class="foo">ipsum <span class="bar">dolor sit amet</span>, consectetur adipiscing elit</span>。 Nulla et imperdiet nisl,et scelerisque augue。

因为正则表达式正在寻找最后一次出现的结束标记。不仅仅是第一个。