从字符串

时间:2019-07-09 08:53:00

标签: javascript

需要使用“ notranslate”类删除特定的HTML标签范围,以下解决方案是从我的文本中删除所有HTML标签。

我的预期结果是:Deleted String: Adding string: Idea No.<p>d</p> value Details

var str = 'Idea No.<p>d</p> {{value}} Details';
var addStr = 'Adding string: ' + str.replace('{{', '<span class="notranslate">').replace('}}', '</span>');
console.log('Deleted String: ' + addStr.replace(new RegExp(/<\/?[\w\s="/.':;#-\/\?]+>/gi), ''));

4 个答案:

答案 0 :(得分:1)

解析DOM非常复杂,无法手工编写。

如果可以在浏览器中运行它,以下是解决方法:

var str = 'Idea No.<p>d</p> {{value}} Details';
var addStr = 'Adding string: ' + str.replace('{{', '<span class="notranslate">').replace('}}', '</span>');

const dom = document.createElement('div');
dom.innerHTML = addStr;
const notranslate = dom.getElementsByClassName('notranslate');
for (let elem of notranslate) {
  elem.remove();
}
console.log(dom.innerHTML);

答案 1 :(得分:1)

如果您确实想使用RegEx进行操作,则可以使用以下内容剥离任何 HTML span 元素,该元素具有 { {1}}类。它考虑到了您可以在元素上具有其他属性以及多个类名这一事实。只要存在notranslate类为<span>的{​​{1}},它将剥离HTML标记并保留内容。

notranslate

工作片段:

/<span.*?class=(?:"|"(?:[^"]*)\s)notranslate(?:"|\s(?:[^"]*)").*?>(.*?)<\/span>/

如果同一字符串中可以多次出现该标签,则可以添加let str1 = 'I want <span class="notranslate" data-xyz="whatever">this</span> to be removed.'; console.log('original:', str1); console.log('modified:', str1.replace(/<span.*?class=(?:"|"(?:[^"]*)\s)notranslate(?:"|\s(?:[^"]*)").*?>(.*?)<\/span>/, "$1")); let str2 = 'I want <span class="whatever notranslate another-class" data-xyz="whatever">this</span> to be removed.'; console.log('original:', str2); console.log('modified:', str2.replace(/<span.*?class=(?:"|"(?:[^"]*)\s)notranslate(?:"|\s(?:[^"]*)").*?>(.*?)<\/span>/, "$1"));(全局)标志。

g

/<span.*?class=(?:"|"(?:[^"]*)\s)notranslate(?:"|\s(?:[^"]*)").*?>(.*?)<\/span>/g

答案 2 :(得分:0)

要删除特定的HTML标签但要保留innerHtml, 尝试this

CREATE TABLE public.cities_and_towns (
    id integer NOT NULL,
    geom public.geometry(Point,{CRS}),
INSERT INTO public.layer_styles VALUES (1, '{DATABASE}', 'public', 'cities_and_towns', 'geom', 'cities_and_towns', '<!DOCTYPE qgis PUBLIC ''http://mrcc.com/qgis.dtd'' ''SYSTEM''>
<qgis simplifyAlgorithm="0" simplifyDrawingHints="0" hasScaleBasedVisibilityFlag="0" readOnly="0" simplifyLocal="1" simplifyMaxScale="1" minScale="1e+08" labelsEnabled="0" version="3.8.0-Zanzibar" maxScale="0" styleCategories="AllStyleCategories" simplifyDrawingTol="1">
 <flags>

答案 3 :(得分:-1)

该方法替换所有标记,因为您在RegExp中使用了'gi'选项,其中'gi'执行不区分大小写的全局替换。如果要替换特定的类,则必须在regExp中定义