【问题标题】:Remove HTML content groups from start to end of string in JavaScript在 JavaScript 中从字符串的开头到结尾删除 HTML 内容组
【发布时间】:2023-03-22 07:20:01
【问题描述】:

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

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 作为属性存储到我的过滤器对象中)。

帮助表示赞赏。

【问题讨论】:

  • 所有询问使用正则表达式解析 HTML 的人必读:stackoverflow.com/questions/1732348/…
  • 已经在我的 Stack 文件夹中为该答案添加了书签,不想简单地增加其视图。我不需要 Chuck Norris RegEx 来匹配标签。我的条件是有限的。给定一组有限的条件,这是可以做到的!

标签: javascript html regex


【解决方案1】:

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

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

假设在开始标签和结束标签之间没有&lt;&gt;

【讨论】:

  • 我不知道我们可以在那个表达式中使用\1,一直在逗号后面的表达式中使用。工作。谢谢!
  • 是的 \1 是可以在正则表达式本身中使用的反向引用。
  • 如果我想删除特定标签及其内容,您能帮帮我吗?
  • @anubhava 它不起作用str.replace(/&lt;(a)\s*[^&gt;]*&gt;.*?&lt;\/\1&gt;/ig, '') 我想删除所有a 标签及其内容,请帮我解决这个问题。
  • @GulmuhammadAkbari:评论不是提出新问题的正确地方。请发布一个新问题,您将得到答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-12
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多