正则表达式用于删除javascript中的标签

时间:2018-11-04 11:33:40

标签: javascript regex

我有这个标签:

const tag = '<symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28.3 28.3" id="logo-square-empty"><path fill="none" d="M-.7-.9h30v30h-30z" /><path d="M0 28.3h28.3V0H0v28.3zM3.5 3.5h21.3v21.3H3.5V3.5z" /></symbol>'

我想删除<symbol></symbol>标签,并得到以下结果:

<path fill="none" d="M-.7-.9h30v30h-30z" /><path d="M0 28.3h28.3V0H0v28.3zM3.5 3.5h21.3v21.3H3.5V3.5z" />

所以我写了这个正则表达式:

/</?symbol[^>]*>/;

可以在这里进行测试:https://regexr.com/42fan

我应该能够做到:

const regex = /</?symbol[^>]*>/;
const replacedString = tag.replace(regex, '');

但是我得到Parsing error: Unexpected token ^。我应该如何编写以避免这种解析错误?

3 个答案:

答案 0 :(得分:1)

我们可以使用tag作为HTML来代替解析HTML:

const tag = '<symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28.3 28.3" id="logo-square-empty"><path fill="none" d="M-.7-.9h30v30h-30z" /><path d="M0 28.3h28.3V0H0v28.3zM3.5 3.5h21.3v21.3H3.5V3.5z" /></symbol>'

var div = document.createElement('DIV')
div.innerHTML = tag
result = div.firstElementChild.innerHTML.toString()
console.log(result)

答案 1 :(得分:1)

请尝试使用以下正则表达式:

const regex = /<\/?symbol[^>]*>/;
const replacedString = tag.replace(regex, '');

答案 2 :(得分:0)

您尚未在正则表达式中转义/。您不会有以下错误:

/<\/?symbol[^>]*>/

也就是说,它不能用于您的任务,并且使用正则表达式解析HTML仍然不是一个好主意。而且,您可能更喜欢使用getElementByXXX javascript方法直接使用DOM。