2016-11-23 81 views
-1

我有一個字符串,它包含多個雙引號,並且我只想替換某些字符之間的字符串。通過正則表達式在比賽中跳出雙引號

示例串:

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

我想輸出是:

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

我已經試過在regexr的以下變化,以嘗試匹配報價,但我不成功:

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

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

是否可以添加轉義到我的標籤之間的引號?

+0

使用's.replace(/()( 「[^」] *「)(<\/MyTag>)/克,功能($ 0,$ 1,$ 2,$ 3 ){return $ 1 + $ 2.replace(/「/ g,'\\'')+ $ 3;})',或者如果標籤內有任何引號,則可以替換'(」[^「] *」) '([^ <] *)' –

+0

@WiktorStribiżew這對我有效,謝謝! – dgolf05

回答

0

如果它是很具體的,就像你寫一個簡單的替換()就會簡單得多,並要求更少的資源:

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/

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>" 
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); 

參考