我有这个标签:
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 ^
。我应该如何编写以避免这种解析错误?
答案 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。