簡體   English   中英

如何使用javascript和正則表達式替換雙引號字符串中的雙引號?

[英]How do I replace a double quote inside double quoted string using javascript and regular expressions?

如何使用下面的JSON字符串的正則表達式在雙引號內轉義雙引號( " )?

[{
     "LDAP_ID":"a",
     "LAC_NO":"1153274",
     "ACTION":"VBE",
     "DATE_OF_ACTION":"06-01-2006 AM 12:00:00",
     "RESPONSE":"DPP",
     "DEF_OBSERV":"M",
     "REMARK":"visited b"         s emp & rcd 1 emi",
     "OPR_ID":"FCTV1",
     "ACTION_TO_BE":"",
     "ACTION_TO_BE_DT":"",
     "AMOUNT_TOBECHG":"",
     "DELEGATED_TO":"",
     "BRANCH_CODE":"100",
     "DISP_DATE_OF_ACTION":"06-JAN-06",
     "DISP_ACTION_TO_BE_DT":"",
     "SRNO":"142871",
     "DELETED_FLAG":"",
     "TIMESTAMP":"10-08-2012 AM 11:38:30",
     "STAMPDATETIME":"2012-08-10 11:38:30"
}]

需要轉義的關鍵字:

"REMARK":"visited b"         s emp & rcd 1 emi",

使用正則表達式無法解決此問題。 你甚至可以想出一個在99%的情況下工作的,但僅此而已。

無效的JSON無效,必須由服務器端的人員修復。 正則表達式並非旨在解決此類問題。 你最好在服務器端修復它。

使用正則表達式在JS中修復無效JSON的唯一方法是將其作為字符串接收,進行替換,然后將其重新評估為JSON。 最后一步可能不安全。 這是一個類似問題的問題: 將對象字符串轉換為JSON

所以我建議在收到之前修復JSON。 無論如何,如果你不能,這是一個正則表達式的解決方案。

正則表達式僅在值“和”的分隔符之間運行,以確保僅在值(已編輯 )中轉義雙引號。

:\s*"[^"]*"[^"]*"\s*(,|\s*\})

這是替換的完整代碼(正則表達式編輯 ):

var str = '[{ "LDAP_ID":"a", "LAC_NO":"1153274", "ACTION":"VBE", "DATE_OF_ACTION":"06-01-2006 AM 12:00:00", "RESPONSE":"DPP", "DEF_OBSERV":"M", "REMARK":"visited b" s emp & rcd 1 emi", "OPR_ID":"FCTV1", "ACTION_TO_BE":"", "ACTION_TO_BE_DT":"", "AMOUNT_TOBECHG":"", "DELEGATED_TO":"", "BRANCH_CODE":"100", "DISP_DATE_OF_ACTION":"06-JAN-06", "DISP_ACTION_TO_BE_DT":"", "SRNO":"142871", "DELETED_FLAG":"", "TIMESTAMP":"10-08-2012 AM 11:38:30", "STAMPDATETIME":"2012-08-10 11:38:30" }]'

var j = str.replace(/(:\s*"[^"]*)"([^"]*"\s*(,|\s*\}))/g, '$1\\"$2');

var json = JSON.stringify(eval("(" + j + ")"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM