【问题标题】:Replace all tags and space替换所有标签和空格
【发布时间】:2020-09-23 17:16:40
【问题描述】:

我正在尝试替换下面的字符串

<span class="test">select&nbsp;</span><span class="click">*&nbsp;</span><span class="test">from&nbsp;</span><span class="click">table&nbsp;</span>

select * from table。我已经为此苦苦挣扎了一段时间,希望有人能帮助我。

我可以更换&amp;nbsp&lt;/span&gt;,但无法移除剩余部分。

string = `<span class="test">select&nbsp;</span><span class="click">*&nbsp;</span><span class="test">from&nbsp;</span><span class="click">table&nbsp;</span>`;
string = string.replace(/&nbsp;/g,"").replace(/<\/span\s*\/?>/gi, ' ');
  // .replace("<span class=\"([^\"]+)\"", "g");
console.log(string);

请帮帮我。

【问题讨论】:

标签: javascript replace


【解决方案1】:

string = `<span class="test">select&nbsp;</span><span class="click">*&nbsp;</span><span class="test">from&nbsp;</span><span class="click">table&nbsp;</span>`;


string = string
.replace(/<span class=\"\S+\">/gi, '')
.replace(/<\/span>/gi, '')
.replace(/&nbsp;/gi, ' ')
;
  
console.log(string);

编辑:正如Jeremy Thille 建议的那样,spans 有更好的正则表达式。

string = `<span class="test">select&nbsp;</span><span class="click">*&nbsp;</span><span class="test">from&nbsp;</span><span class="click">table&nbsp;</span>`;


string = string
.replace(/<\/?span.*?>/g,'')
.replace(/&nbsp;/gi, ' ')
;
  
console.log(string);

【讨论】:

  • 所有跨度都可以通过一个正则表达式 /&lt;\/?span.*?&gt;/g 消失
【解决方案2】:

如果你可以访问 DOM

const str = '<span class="test">select&nbsp;</span><span class="click">*&nbsp;</span><span class="test">from&nbsp;</span><span class="click">table&nbsp;</span>';

const span = document.createElement('span');
span.innerHTML = str;
console.log(span.innerText);

// "select * from table "

如果你想使用正则表达式

s.replace(/<[^>]+>/g, '').replace(/&nbsp;/g, ' ');

在这里,我将删除任何 &lt; 后跟 1 个或多个 not(&gt;)&gt; 以及结尾

【讨论】:

  • 谢谢.. 使用了正则表达式方法,它替换了字符串中所有不需要的代码。很简单,一行代码。
猜你喜欢
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 2015-04-11
  • 2012-12-16
  • 2018-04-15
  • 1970-01-01
  • 2020-10-31
  • 2013-05-26
相关资源
最近更新 更多