![](/img/trans.png)
[英]Javascript regexp replace of multiline content between two tags (including the tags)
[英]replace number between two tags javascript
var input = " <root> <date>1995-03-03</date> <heure>13:33</heure> <day0>2</day0> <day1>0</day1> <day2>0</day2> <no2>1</no2> <pm10>2</pm10> <day0_o3>0</day0_o3> <day1_o3>0</day1_o3> <day2_o3>0</day2_o3> </root>"
假设我想将 day0 值更新为 6,那么 output 将是
OutPut = " <root> <date>1995-03-03</date> <heure>13:33</heure> <day0>6</day0> <day1>0</day1> <day2>0</day2> <no2>1</no2> <pm10>2</pm10> <day0_o3>0</day0_o3> <day1_o3>0</day1_o3> <day2_o3>0</day2_o3> </root>"
感谢您的回复,我已解决此问题
input.replace(/<day0>.*<\/day0>/, '<day0>6</day0>');
我不确定你是如何获得输入的,但如果它来自 DOM,你可以使用document.getElementsByTagName("day0")[0].innerText = "new output";
如果您还有其他意思,请提供更多详细信息
使用纯 javascript 您可以编写如下内容:
document.querySelector("day0").textContent = "6";
如果您应该支持现在知道 textContent 的浏览器,您可以编写:
document.querySelector("day0").innerText = "6";
不要使用innerHTML 替换文本以防止XSS 漏洞。
您还可以编写自己的小 function 来查找字符串中的标签,假设输入始终是带有标签的字符串。
例如:
var replaceValueInTag = (tags, tagName, newValue) => {
var startTag = `<${tagName}>`;
var endTag = `</${tagName}>`;
var indexOfStartTag = tags.indexOf(startTag);
var indexOfEndTag = tags.indexOf(endTag);
var value = tags.substring(indexOfStartTag + startTag.length, indexOfEndTag);
return tags.replace(`${startTag}${value}${endTag}`, `${startTag}${newValue}${endTag}`);
}
var tags = " <root> <date>1995-03-03</date> <heure>13:33</heure> <day0>2</day0> <day1>0</day1> <day2>0</day2> <no2>1</no2> <pm10>2</pm10> <day0_o3>0</day0_o3> <day1_o3>0</day1_o3> <day2_o3>0</day2_o3> </root>":
replaceValueInTag(tags, 'day0', '6');
// output:
// <root> <date>1995-03-03</date> <heure>13:33</heure> <day0>6</day0> <day1>0</day1> <day2>0</day2> <no2>1</no2> <pm10>2</pm10> <day0_o3>0</day0_o3> <day1_o3>0</day1_o3> <day2_o3>0</day2_o3> </root>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.