删除双反斜杠的Javascript正则表达式
使用反斜杠正则表达式时遇到一些问题。我想删除对象的任何字符串属性上存在的所有双反斜杠(或2的任意倍数)。我不希望删除单个反斜杠,也不希望删除奇数个反斜杠中的最后一个反斜杠(例如,在一组连续的五个反斜杠中保留一个反斜杠) 代码如下:删除双反斜杠的Javascript正则表达式,javascript,regex,Javascript,Regex,使用反斜杠正则表达式时遇到一些问题。我想删除对象的任何字符串属性上存在的所有双反斜杠(或2的任意倍数)。我不希望删除单个反斜杠,也不希望删除奇数个反斜杠中的最后一个反斜杠(例如,在一组连续的五个反斜杠中保留一个反斜杠) 代码如下: 正如您在console.log中看到的,其中一个反斜杠仍然存在。有人知道我需要什么正则表达式来删除它们吗?问题出在JSON字符串中。“\\”中已经有一个反斜杠 >console.log(“没有数据\\传入”); 没有数据\传入 您确定不想删除所有反斜杠吗 obj=
正如您在console.log中看到的,其中一个反斜杠仍然存在。有人知道我需要什么正则表达式来删除它们吗?问题出在JSON字符串中。
“\\”
中已经有一个反斜杠
>console.log(“没有数据\\传入”);
没有数据\传入
您确定不想删除所有反斜杠吗
obj=obj.replace(/\\\/g,”);
这样做将删除文本反斜杠,如
“\\”
,但仍将保留其他转义序列,如“\n”
,因为在这些情况下,反斜杠只在字符串文本中,而不是在实际字符串中。问题在于JSON字符串。“\\”
中已经有一个反斜杠
>console.log(“没有数据\\传入”);
没有数据\传入
您确定不想删除所有反斜杠吗
obj=obj.replace(/\\\/g,”);
这样做将删除文本反斜杠,如
“\\”
,但仍将保留其他转义序列,如“\n”
,因为在这些情况下,反斜杠仅在字符串文本中,而不是在实际字符串中。是有意义的——我想我可以只执行obj=obj.replace(/\\/g,”);因为在.replace时字符串中出现的任何反斜杠最初都是双反斜杠。这个函数最终将获得包含转义JSON的应用字符串。。。那就是我头痛加剧的地方。我想这会管用的,我会接受这个答案,谢谢@ElliotB:为什么你甚至需要更换反斜杠?理想情况下,您甚至不必这样做……我正在使用一个专有后端,当传入两个或多个连续的反斜杠时,该后端的本机方法将JSON转换为记录结构错误。这很有意义——我想我可以只执行obj=obj.replace(/\\\/g,”);因为在.replace时字符串中出现的任何反斜杠最初都是双反斜杠。这个函数最终将获得包含转义JSON的应用字符串。。。那就是我头痛加剧的地方。我想这会管用的,我会接受这个答案,谢谢@ElliotB:为什么你甚至需要更换反斜杠?理想情况下,您甚至不必这样做……我正在使用一个专有后端,当传入两个或多个连续反斜杠时,该后端的本机方法将JSON转换为记录结构错误。
//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);