【问题标题】:How to search a string based on a condition in regular expression如何根据正则表达式中的条件搜索字符串
【发布时间】:2020-03-29 22:59:55
【问题描述】:

我有一个输入字符串,我需要用空格替换字符串中的所有标签,它工作正常。但我不想选择“title”属性内的标签。

这是我的输入字符串

var temp='<div title="Minimum Standards for <mark>Child</mark> Protection in Humanitarian Action (CPMS) | content of" >
  <mark>Child</mark>
</div>';

这是我替换字符串的正则表达式代码。

temp = String(temp).replace(/(<mark[^>]*>|<\/mark>)/g, '');

我只需要匹配“title”属性外的标记标签,或者我只想忽略“title”属性内的标记标签,我需要一个正则表达式。提前致谢。

【问题讨论】:

标签: javascript regex regular-language


【解决方案1】:

一种选择是将 HTML 标记解析为文档,然后选择所有带有 querySelectorAllmark 标记并删除它们:

const str = `<div title="Minimum Standards for <mark>Child</mark> Protection in Humanitarian Action (CPMS) | content of" >
  <mark>Child</mark>
</div>`;
const doc = new DOMParser().parseFromString(str, 'text/html');
doc.body.querySelectorAll('mark').forEach(mark => mark.remove());
console.log(doc.body.innerHTML);

【讨论】:

  • 我认为 parse + process + innerHTML 的结果可能是一个实用的解决方案,但与文本编辑方法相比可能会有不同(不一定“错误”)的结果。
猜你喜欢
  • 2018-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
相关资源
最近更新 更多