我需要将文件夹路径发送到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
侧添加4
和js
。有没有更好的方法来实现这一目标?
编辑:
对于fpath = \\1.1.1.1\\\\\\\\foo\bar\\\config
之类的输入路径,输出应为\\\\192.168.0.1\\foo\\bar
答案 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 \\
如果我正确理解你的问题,你别无其他任何事情