如何在Javascript中替换字符串中的svg标记
我正在尝试使用正则表达式替换字符串中的svg标记,下面是我的尝试如何在Javascript中替换字符串中的svg标记,javascript,regex,Javascript,Regex,我正在尝试使用正则表达式替换字符串中的svg标记,下面是我的尝试 const REPLACE_标签=[ “svg”, "g",, “圆圈”, “路径”, “rect”, “defs”, "行",, “线性辐射”, “径向梯度”, "停",, “椭圆”, “多边形”, “多段线”, “文本”, “茨潘” ]; 常量str='>' 函数递归(str、arr、index){ 如果(索引>=arr.length){ 返回str; } 让tag=`“]|“[^”]*“[^']*”[^']*”)*)>`;
const REPLACE_标签=[
“svg”,
"g",,
“圆圈”,
“路径”,
“rect”,
“defs”,
"行",,
“线性辐射”,
“径向梯度”,
"停",,
“椭圆”,
“多边形”,
“多段线”,
“文本”,
“茨潘”
];
常量str='>'
函数递归(str、arr、index){
如果(索引>=arr.length){
返回str;
}
让tag=`“]|“[^”]*“[^']*”[^']*”)*)>`;
let pattern=/tag/g;
str=str.replace(模式,`SVG.${arr[index][0].toUpperCase()}${arr[index].slice(1)}`);
返回递归(str、arr、index+1);
}
const strn=recurs(str,REPLACE_标记,0);
控制台日志(strn)代码>主要问题是let模式=/tag/g代码>。它不会从标记
变量中创建正则表达式。它是一个正则表达式,用于查找字符串中的文本标记
单词
您需要使用let pattern=new RegExp(tag)从它创建一个正则表达式代码>
您还需要对\
所以
const REPLACE_标签=[
“svg”,
"g",,
“圆圈”,
“路径”,
“rect”,
“defs”,
"行",,
“线性辐射”,
“径向梯度”,
"停",,
“椭圆”,
“多边形”,
“多段线”,
“文本”,
“茨潘”
];
常量str='>'
函数递归(str、arr、index){
如果(索引>=arr.length){
返回str;
}
让tag=`“]|“[^”]*“[^']*”[^']*”)*)>`;
让pattern=newregexp(tag,'g');
str=str.replace(模式,`SVG.${arr[index][0].toUpperCase()}${arr[index].slice(1)}`);
返回递归(str、arr、index+1);
}
const strn=recurs(str,REPLACE_标记,0);
控制台日志(strn)
\b
=>\\b
,let pattern=/tag/g
=>let pattern=new RegExp(tag,“g”)
@WiktorStribiżew我已经替换了它,但仍然不起作用。很可能,我只是列出了常见的“打字错误”。有趣的是,你接受了一个同样的答案。你为什么说它不起作用?@WiktorStribiżew这里是区别let tag=“']|“[^”]*“|”[^']*)*)>;让pattern=newregexp(tag,'g')代码>我创建了正则表达式来查找标记,但现在它也替换了标记和文本。我以为它只会替换标记。我将regex改为let-tag=