【问题标题】:Replacing all back slashes with forward slash用正斜杠替换所有反斜杠
【发布时间】:2016-05-10 09:32:56
【问题描述】:

在某种情况下,我只是想 replace 将所有 反斜杠正斜杠,但在尝试这样做时,我我收到了一些奇怪的结果。

尝试 1:

"\\pest-TS01\Users\pest\Music\musi\New folder".replace(/\\/g, "/")

上面的行产生下面的结果

"/pest-TS01UserspestMusicmusiNew folder"

尝试 2:

var x = new RegExp("\\", "g");
"\\pest-TS01\Users\pest\Music\musi\New folder".replace(x, "/");

而上面的代码抛出如下错误,

Uncaught SyntaxError: Invalid regular expression: //: \ at end of 模式(…)


预期结果:

"//pest-TS01/Users/pest/Music/musi/New folder"

谁能给我一个准确匹配反斜杠的正则表达式?还建议我如何用正斜杠替换匹配的反斜杠。而且我仍然相信我构建的正则表达式是正确的,但是为什么它的行为很奇怪?


特别说明:

请不要建议任何使用字符串操作的解决方案,例如 split() 和类似的东西。我正在寻找正则表达式的答案,并且需要找出我的正则表达式不起作用的原因。

【问题讨论】:

  • 你的第一个表达式是好的,你的字符串不是。必须是"\\\\pest-TS01\\Users\\pest\\Music\\musi\\New folder"
  • 您的模式 .replace(/\\/g, "/") 可以正常工作。
  • @WiktorStribiżew 你为什么这么说?正确的模式应该适用于每种字符串...所以 your string is not OK 没有意义。
  • 我不明白反对票。这是一个有效的问题。
  • PS:我没有投反对票 - 但是它是重复的 - 例如stackoverflow.com/questions/2479309/…

标签: javascript regex


【解决方案1】:

使用String.raw(),将单个\ 转换为\\,最后将\\ 转换为/

string = String.raw`\\pest-TS01\Users\pest\Music\musi\New folder`;
result = string.replace(/\b[\\]{1}\b/g, "/").replace(/\\+/, "/");
document.write(result);

老实说,我不知道单反斜杠 幕后 发生了什么,但我猜他们正在被逃脱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2022-11-25
    • 2011-10-14
    • 2021-05-29
    • 1970-01-01
    相关资源
    最近更新 更多