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

时间:2012-05-30 22:50:20

标签: javascript regex

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

代码在这里:

http://jsfiddle.net/59Zau/

//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 个答案:

答案 0 :(得分:6)

问题出在您的JSON字符串中。 "\\"已经有一个反斜杠。

>> console.log("No data \\passed in");
No data \passed in

您确定不想只删除所有反斜杠吗?

obj = obj.replace(/\\/g,"");

这样做会删除像"\\"这样的文字反斜杠,但仍会保留其他转义序列,例如"\n",因为在这些情况下反斜杠只是在字符串文字中,而不是在实际的字符串中。