【问题标题】:string with &lt;tag_name&gt; replace with null带有 <tag_name> 的字符串替换为 null
【发布时间】:2021-09-01 23:18:22
【问题描述】:

我只是想用这样的 HTML 部分替换以下文本

designed to display special types of text:&lt;b&gt;- Bold text&lt;strong&gt;&nbsp;- Important text&lt;i&gt;&nbsp;- Italic text&lt;em&gt;&nbsp;- Emphasized text&lt;mark&gt;&nbsp;- 

使用此正则表达式将 &amp;lt;&amp;gt; 之间的所有内容替换为空

html = html.replace("/(&lt;\/*\w+?&gt;)/g", '');

但我的正则表达式似乎不起作用,如何获得准确的?

【问题讨论】:

  • 您缺少 / 开头 - 这将显示在您的浏览器控制台中。但听起来像是一个 XY 问题——你从哪里得到原始字符串?
  • 我从这个页面得到w3schools.com/html/html_formatting.asp,我刚刚更新了正则表达式'(<\/*\w+?>)'
  • 好的 - 所以它只是在您的代码中定义的一个字符串 (var html = '...') - 如果您使用 jquery 从页面获取它,例如 $("#id").html(),那么简单的解决方案是使用 @ 987654329@ 而不是 .html()

标签: javascript jquery regex nsregularexpression


【解决方案1】:

如果您不打算使用组,则无需使用 () 分组。一个相对简单的正则表达式就足够了:

  • 匹配&amp;lt;
  • 匹配任意数量的字符,non-greedy.*?
  • 匹配&amp;gt;
  • 适用于所有g
  • 替换为''

var html = 'designed to display special types of text:&lt;b&gt;- Bold text&lt;strong&gt;&nbsp;- Important text&lt;i&gt;&nbsp;- Italic text&lt;em&gt;&nbsp;- Emphasized text&lt;mark&gt;&nbsp;- ';
console.log(html.replace(/&lt;.*?&gt;/g, ''));

警告请注意,使用正则表达式解析 HTML 并不可靠。它可能适用于您的场景,但它非常很容易在它不起作用的地方中断/提供一个字符串。

【讨论】:

    猜你喜欢
    • 2021-04-04
    • 2021-10-30
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多