需要使用“ 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), ''));
答案 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中定义