如何在javascript中用正则表达式替换字符串的特定位置
这是代码,它只针对一行字符串,但不适用于多行文本。 我正在从xml文件中提取数据如何在javascript中用正则表达式替换字符串的特定位置,javascript,node.js,regex,angular,Javascript,Node.js,Regex,Angular,这是代码,它只针对一行字符串,但不适用于多行文本。 我正在从xml文件中提取数据 let xmlData = `<?xml version="1.0" encoding="utf-8"?> <RecipeData> <SUNDAY Value="1"/> <SUNDAY/> <SUNDAY/> <SUNDAY/> <MONDAY Value="1"/> &l
let xmlData = `<?xml version="1.0" encoding="utf-8"?>
<RecipeData>
<SUNDAY Value="1"/>
<SUNDAY/>
<SUNDAY/>
<SUNDAY/>
<MONDAY Value="1"/>
</MONDAY>
<MONDAY>
</MONDAY>
</RecipeData>`;
search = '<SUNDAY/>'
let n = 2
console.log(xmlData.replace(RegExp("((<SUNDAY(\s*)\/(\s*)>)$\g){" + n + "}"), function(x){return x.replace(RegExp("((<SUNDAY(\s*)\/(\s*)>)$\g)" + "$"), "HHHH")}))
让xmlData=`
`;
搜索=“”
设n=2
log(xmlData.replace(RegExp((()$\g){“+n+”}),函数(x){return x.replace(RegExp((()$\g)”+“$”,“hhh”)})
预期产出:
我们正在替换第二次发生的
`<SUNDAY with HHHH.`
`一个选项是使用,例如,在nodeName
等于SUNDAY
的情况下,计算出现次数
如果存在匹配项,请通过parentNode将该节点替换为新节点
让xmlData=`
`,
搜索='SUNDAY',
n=2;
parser=新的DOMParser();
xmlDoc=parser.parseFromString(xmlData,“text/xml”);
让childNodes=xmlDoc.documentElement.childNodes;
让nrSundays=0;
for(设i=0;i log(新的XMLSerializer().serializeToString(xmlDoc.documentElement))代码>任何地方都没有匹配换行符。您希望正则表达式如何匹配多行文本块?此外,模式字符串中没有反斜杠<代码>“\s”
=“s”
。为什么模式中有\g
?为什么首先要使用正则表达式处理XML?应该包括预期的输出。预期的输出已经包括在内
<?xml version="1.0" encoding="utf-8"?>
<RecipeData>
<SUNDAY Value="1"/>
<HHHHH/>
<SUNDAY/>
<SUNDAY/>
<MONDAY Value="1"/>
</MONDAY>
<MONDAY>
</MONDAY>
</RecipeData>;