4

我需要一个可以从头到尾删除完整标签的正则表达式。
例如:
对于给定的字符串:

var str = "Hello <script> console.log('script tag') </script> World";

我需要一个输出:

"Hello  World" // with full script tag including inner content removed

我只针对RegEx解决方案非常具体,因此不需要浏览器附加技巧。
如果这根本不可能,请通知。

我试过这个及其变体:

inputString.replace( /<\/?[^>]+(>|$)/g, "" );

但这并没有达到我想要的效果,并且只删除了标签元素,留下了内部内容。我应该在表达式中创建哪些RegEx组?

我不需要处理诸如 之类的东西type="text/javascript",因为在我收到字符串之前它们已经被过滤了。没有jQuery请。(我需要将 RegEx 作为属性存储到我的过滤器对象中)。

帮助表示赞赏。

4

1 回答 1

4

这是纯正则表达式解决方案:

var str = "Hello <script> console.log('script tag') </script> World";
var repl = str.replace(/<([^.]+)>.*?<\/\1>/ig, '');
//=> "Hello  World"

假设开始标签和结束标签之间没有<OR 。>

于 2013-10-28T10:23:21.797 回答