使用反斜杠有效生成文件夹路径

时间:2015-11-30 11:18:53

标签: javascript jquery regex

我需要将文件夹路径发送到MySQL。所以我逃脱了每个反斜杠。通过javascript发送的路径为:

\\\\192.168.0.1\\foo\\bar

这最终会保存为(in db)

\\192.168.0.1\foo\bar

所以,我写了下面的代码:

        fpath = fpath.replace(/\\+/g,'\\\\'); // Replace multiple occurences of backslash with double backslash

        var fpathLen = fpath.length;

        if(fpath.charAt(fpathLen-1) == '\\')
            fpath = fpath.substring(0,fpathLen-2); // Remove the trailing backslash if any

        if(fpath.charAt(0) == '\\') {
            fpath = '\\\\' + fpath;  // Add 2 more backslash before sending the string to MySQL
        }
        else
            fpath = '\\\\\\\\' + fpath; // If string is without a leading backslash, insert 4 backslash

但它似乎不是一种有效的做事方式!例如,我已手动添加4,在另一个案例8反斜杠中分别在2侧添加4js。有没有更好的方法来实现这一目标?

编辑: 对于fpath = \\1.1.1.1\\\\\\\\foo\bar\\\config之类的输入路径,输出应为\\\\192.168.0.1\\foo\\bar

1 个答案:

答案 0 :(得分:2)

编辑:

您可以通过两个正则表达式执行此操作:

fpath = fpath.replace(/\\+/g,'\\\\');

fpath = fpath.replace(/^\\*(.*?)\\*$/,'\\\\\\\\$1');

演示:

function makeFpath() {
  fpath = document.getElementById("fpath").value
  fpath = fpath.replace(/\\+/g, '\\\\').replace(/^\\*(.*?)\\*$/, '\\\\\\\\$1');

  document.getElementById("out").innerHTML = fpath
}

makeFpath()
<input id="fpath" onkeyup="makeFpath()" onchange="makeFpath()" value="\\\1.1.1.1\\\\\\\\foo\bar\\\config\" style="width: 100%" />
<div id="out"></div>

<强> OLD: 我觉得你有点搞砸所有的逃避*,这是为你做的吗? :

fpath = fpath.replace(/\\/g,'\\\\'); // replaces a single \ by one double \\
如果我正确理解你的问题,你别无其他任何事情