Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中替换字符串中的svg标记_Javascript_Regex - Fatal编程技术网

如何在Javascript中替换字符串中的svg标记

如何在Javascript中替换字符串中的svg标记,javascript,regex,Javascript,Regex,我正在尝试使用正则表达式替换字符串中的svg标记,下面是我的尝试 const REPLACE_标签=[ “svg”, "g",, “圆圈”, “路径”, “rect”, “defs”, "行",, “线性辐射”, “径向梯度”, "停",, “椭圆”, “多边形”, “多段线”, “文本”, “茨潘” ]; 常量str='>' 函数递归(str、arr、index){ 如果(索引>=arr.length){ 返回str; } 让tag=`“]|“[^”]*“[^']*”[^']*”)*)>`;

我正在尝试使用正则表达式替换字符串中的svg标记,下面是我的尝试

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=