我有一个包含多个双引号的字符串,我想只替换某些字符之间的字符串。
示例字符串:
"XML": "<MyTag>"Value1"</MyTag><MyTag2>Value2</MyTag2>"
我希望输出为:
"XML": "<MyTag>\"Value1\"</MyTag><MyTag2>Value2</MyTag2>"
我在regexr中尝试了下面的变体来尝试匹配引号,但我没有成功:
/<MyTag>(")<\/MyTag>/
/(<MyTag>)"(<\/MyTag>)/
是否可以在我的代码之间为引号添加转义?
答案 0 :(得分:0)
如果它非常具体,就像你写一个简单的replace()会更简单并且需要更少的资源:
var str = '"XML": "<MyTag>"Value1"</MyTag><MyTag2>Value2</MyTag2>"';
// replace
str = str.replace('<MyTag>"','<MyTag>\\"');
str = str.replace('"</MyTag>', '\\"<MyTag>');
// test
alert(str);
的jsfiddle:
https://jsfiddle.net/xbe1x0mz/
答案 1 :(得分:0)
var sampleString = '"<MyTag>"value1"</MyTag><MyTag>value2</MyTag>"';
var first = sampleString.replace(/<MyTag>"/g, "<MyTag>\\\"")
var second = sampleString.replace(/"</MyTag>/g, "\\\"<MyTag>")
// second = "<MyTag>\"value1\"</MyTag><MyTag>value2</MyTag>"
答案 2 :(得分:0)
不要使用正则表达式操作XML数据!特别是当正确地做事时很容易:
// Convert XML string to DOM:
var root = new DOMParser().parseFromString(YOUR_XML_DATA, 'text/xml');
// Manipulate all elements you want to:
var all_my_tags = root.querySelectorAll('MyTag');
for (var i = 0, len = all_my_tags.length; i < len; ++i) {
var my_tag = all_my_tags[i];
my_tag.textContent = my_tag.textContent.replace(...);
}
// Convert DOM to an XML string again:
var xml_data = new XMLSerializer().serializeToString(root);
比照