逃避&使用Javascript / jQuery进行unescape反斜杠

时间:2016-04-12 13:11:52

标签: javascript jquery backslash

以下是测试用例

  • \\ 192.168.100.1 \文件夹\文件名
  • actividirectoryName \用户名
  • somethingelse \ text \\ and this
  • \

如何逃避这些字符串并再次取消它。

我试过这样的事情"mystring\something".replace(/[\\]/g, '\\\\'); 但是当我有像"name\b" or "text\n" or "text\t"

这样的字符串时,它确实发送了工作

因为这些是tab,newline等的保留键。 处理此问题的最佳方法是什么

更新 即使在这个编辑中我还要写3条反斜杠来向你展示两条斜线?当我第一次写出2个斜杠时,它只显示了1个斜杠<​​/ p>

1 个答案:

答案 0 :(得分:0)

取决于你想要解决的方式,这取决于这些字符串的存储位置。

只有两种方法可以解决这个问题,这两种方法都需要在使用之前将变量存储在其他位置。

如果你使用的是php,你可以使用Raw。如果您正在执行ajax请求或将值加载到DOM中,您可以使用javascript来获取这些值,并使用baskslashes保存它们。

var text = document.getElementById('id');
var a = document.getElementById('v').value;
var b = String.raw `${a}`
var c = String.raw `\\192.168.100.1\foldername\filename`
var d = '\\192.168.100.1\foldername\filename'
var test = [
  d + ' - in JavaScript',
  c + ' - in raw',
  a + ' - in HTML',
  b + ' - in raw variable'
];
for (var i = 0, l = test.length; i < l; i++) {
  text.value += test[i] + '\n';
}
textarea {
  width: 100%;
}
<input id='v' value='\\192.168.100.1\foldername\filename' type='hidden' />
<textarea rows='10' id='id'></textarea>

要使用php和raw,它看起来像这样

String.raw`<?=$variable?>`

编辑获得此原始数据后,您可以开始使用REGEX和其他转义方式。

var c = String.raw `\\192.168.100.1\foldername\filename<\/p>`
var text2 = document.getElementById('id2');
text2.value = (c + '').replace('\\\\', '\\').replace('\\/', '/');
textarea {
  width: 100%;
}
<textarea rows='10' id='id2'></textarea>