2017-10-18 72 views
0

我有以下字符串正則表達式來刪除一個字符串的只有兩次出現

"{\"title\": \"Option 1\", \"description\": \"This is the \"FIRST OPTION\" in the list.\"}" 

我需要符號QUOT取代圍繞第一選擇逃跑的報價;所以它看起來是這樣的:

"{\"title\": \"Option 1\", \"description\": \"This is the "FIRST OPTION" in the list.\"}" 

我能想到的是隻有這樣,才能改變兩個\「出現後\‘描述\’:\」(它必須是隻有兩個,因爲附近的字符串末尾有需要保持這樣的轉義引號),但我無法弄清楚語法(我對正則表達式很陌生)。

有沒有在JS中用正則表達式實現這種方法?

更新:忘了提及FIRST OPTION只是一個例子,它可以是任何字符串,我需要刪除它周圍的轉義引號。

+0

這個網站將幫助你建立你的正則表達式:https://regex101.com/ –

+1

能不'JSON.parse()來'你的字符串,然後做只是操作描述,然後'JSON.stringify()'? – jdubjdub

+0

這顯然是一個JSON字符串,但是......這是你接收到的東西嗎?或者你將要發送的東西?_你打算如何處理結果?在我看來,這是一個[XY問題](http://xyproblem.info/),你有一些問題,你已經決定處理它的方法是將'\「'改成'"'但是 - 根據你本來想做的事情,這可能不是最好的方法,這些報價的實際問題是什麼?描述_real_底層問題。 –

回答

0

看到這個例子:

var text="{\"title\": \"Option 1\", \"description\": \"This is the \"FIRST OPTION\" in the list.\"}"; 
 
text=text.replace(/([\{|:|,])(?:[\s]*)(")/g, "$1'") 
 
.replace(/(?:[\s]*)(?:")([\}|,|:])/g, "'$1") 
 
.replace(/["]/gi, '"').replace(/[']/gi, '"'); 
 

 
text=JSON.stringify(text); 
 
console.log(text); 
 
    
 
text=JSON.parse(text); 
 
console.log(text);

-1

與JSON字符串開始最簡單的事情理解和最安全的事情是把這一回爲JavaScript對象,操作在description字段上,然後將其重新轉換爲字符串。
JSON.parse()和JSON.stringify()會做到這一點。
     (由@jdubjdub建議,但不寫了,所以我來到這裏)

你把這個作爲你的字符串:

"{\"title\": \"Option 1\", \"description\": \"This is the \"FIRST OPTION\" in the list.\"}" 

要賦值給一個變量爲我們的測試目的,另外轉義是必需的:

var yourstring = "{\"title\": \"Option 1\", \"description\": \"This is the \\\"FIRST OPTION\\\" in the list.\"}"; 

然後,您將var obj = JSON.parse(yourstring),使一個對象,你會操作上只是obj.description更換引號,那麼你會var changedstring = JSON.stringify(obj)結束一個字符串了。

var yourstring = "{\"title\": \"Option 1\", \"description\": \"This is the \\\"FIRST OPTION\\\" in the list.\"}"; 
 
console.log('Original String:'); 
 
console.log(yourstring); 
 

 
var obj = JSON.parse(yourstring); 
 
console.log('String parsed into an Object:'); 
 
console.log(obj); 
 

 
var newdesc = obj.description.replace(/"/g, '"'); 
 
obj.description = newdesc; 
 
console.log('Modified Object:'); 
 
console.log(obj); 
 

 
var newstring = JSON.stringify(obj); 
 
console.log('New String:'); 
 
console.log(newstring);

相關問題