通过正则表达式逃离匹配中的双引号

时间:2016-11-23 17:24:48

标签: javascript regex

我有一个包含多个双引号的字符串,我想只替换某些字符之间的字符串。

示例字符串:

"XML": "<MyTag>"Value1"</MyTag><MyTag2>Value2</MyTag2>"

我希望输出为:

"XML": "<MyTag>\"Value1\"</MyTag><MyTag2>Value2</MyTag2>"

我在regexr中尝试了下面的变体来尝试匹配引号,但我没有成功:

/<MyTag>(")<\/MyTag>/

/(<MyTag>)"(<\/MyTag>)/

是否可以在我的代码之间为引号添加转义?

3 个答案:

答案 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);

比照