バックスラッシュの正規表現に問題があります。オブジェクトの文字列プロパティに存在するすべての二重バックスラッシュ (または 2 の倍数) を削除したいと考えています。単一のバックスラッシュも、奇数個のバックスラッシュの最後のバックスラッシュも削除したくありません (たとえば、5 つの連続したバックスラッシュ \\\\\ -> \ のセットに 1 つのバックスラッシュを残します)。
コードは次のとおりです。
//removes all dual backslahes on all string properties on an object
var removeDualBackslash = function (obj) {
var ret = null;
if (typeof(obj) == "string") {
obj = obj.replace(/\\\\/g,"");
return obj;
} else if (typeof(obj) == "number") {
return obj;
} else if (typeof(obj) == "array") {
ret = [];
} else {
ret = {};
}
for (var key in obj)
ret[key] = removeDualBackslash(obj[key]);
return ret;
};
var oJSON = {"t4m_data_in":{"no_data":"No data \\passed in."}};
oJSON = removeDualBackslash(oJSON);
console.log(oJSON.t4m_data_in.no_data);
console.log からわかるように、バックスラッシュの 1 つが残っています。両方を削除するために必要な正規表現を知っている人はいますか?