我尝试了许多事情:
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.
答案 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。
因为正则表达式正在寻找最后一次出现的结束标记。不仅仅是第一个。