Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除双反斜杠的Javascript正则表达式_Javascript_Regex - Fatal编程技术网

删除双反斜杠的Javascript正则表达式

删除双反斜杠的Javascript正则表达式,javascript,regex,Javascript,Regex,使用反斜杠正则表达式时遇到一些问题。我想删除对象的任何字符串属性上存在的所有双反斜杠(或2的任意倍数)。我不希望删除单个反斜杠,也不希望删除奇数个反斜杠中的最后一个反斜杠(例如,在一组连续的五个反斜杠中保留一个反斜杠) 代码如下: 正如您在console.log中看到的,其中一个反斜杠仍然存在。有人知道我需要什么正则表达式来删除它们吗?问题出在JSON字符串中。“\\”中已经有一个反斜杠 >console.log(“没有数据\\传入”); 没有数据\传入 您确定不想删除所有反斜杠吗 obj=

使用反斜杠正则表达式时遇到一些问题。我想删除对象的任何字符串属性上存在的所有双反斜杠(或2的任意倍数)。我不希望删除单个反斜杠,也不希望删除奇数个反斜杠中的最后一个反斜杠(例如,在一组连续的五个反斜杠中保留一个反斜杠)

代码如下:


正如您在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);​