无法用反斜杠替换正斜杠,反之亦然

时间:2018-11-20 12:32:53

标签: javascript regex

Javascript:

var str = 'som\\//kdshn/jasdj/\akdjsl/kas\asd';
var newstr = str.replace(/(\\|\/)/g,function(a, m) { return m == "/" ? "\\" : "//"; });
  

结果:som//\\kdshn\jasdj\akdjsl\kasasd

结果反斜杠被转义了。如何处理?

2 个答案:

答案 0 :(得分:1)

您使用"//"将斜杠加倍。

如果将单个反斜杠与正斜杠互换,则"/"可以。

使用

var newstr = str.replace(/[\\\/]/g,function(a) { return a == "/" ? "\\" : "/"; });

它产生som/\\kdshn\jasdj\akdjsl\kasasd

var str = 'som\\//kdshn/jasdj/\akdjsl/kas\asd';
var newstr = str.replace(/[\\\/]/g,function(a) { return a == "/" ? "\\" : "/"; });
console.log(newstr);

答案 1 :(得分:1)

实际上发生的是,您的反斜杠变为正斜杠,然后将其计算为ASCII字符。

例如:

var test = "foo\bar\foobar"

成为

"fooaroobar"

那是因为\ b和\ f不存在。

您应该这样做:

var test = "foo\\bar\\foobar"

使用正斜杠;)