避免在javascript中转义特殊字符

避免在javascript中转义特殊字符,javascript,escaping,special-characters,Javascript,Escaping,Special Characters,我的服务器返回值为support\testing。当我在客户机中得到这个值时,它可以作为支持测试转义\t作为选项卡空间转义 如何避免在JavaScript中转义特殊字符?如果您能够更改服务器端代码,则应在此处添加转义字符:“support\\testing” 这将产生所需的结果。您可以执行一个简单的替换: str.replace("\t","\\t"); 并对需要替换的其他字符执行此操作。您的服务器需要输出带有正确转义的字符串 在这种情况下,需要在输出中使用反斜杠字符;反斜杠是一个特殊字符,因

我的服务器返回值为
support\testing
。当我在客户机中得到这个值时,它可以作为
支持测试
转义<代码>\t作为选项卡空间转义


如何避免在JavaScript中转义特殊字符?

如果您能够更改服务器端代码,则应在此处添加转义字符:
“support\\testing”


这将产生所需的结果。

您可以执行一个简单的替换:

str.replace("\t","\\t");

并对需要替换的其他字符执行此操作。

您的服务器需要输出带有正确转义的字符串

在这种情况下,需要在输出中使用反斜杠字符;反斜杠是一个特殊字符,因此应该转义

反斜杠的转义序列是
\\
(即两个反斜杠),但您不需要考虑特定的转义码——如果您要输出JS数据,您应该对整个字符串使用正确的转义来输出它,这通常意味着您应该使用JSON编码

现在大多数服务器语言都将JSON编码作为一种内置功能提供。您还没有指定服务器使用的语言,但例如,如果它是用PHP编写的,您可以将字符串输出为
json\u encode($string)
,而不是直接输出
$string
。其他语言也提供了类似的功能。这不仅可以保护您不受反斜杠字符损坏的影响,还可以保护您不受其他错误的影响,例如字符串中的引号或换行符,如果您将它们作为未换行的字符串放入Javascript代码中,也会导致错误。

最佳解决方案

函数有效(f){
调试器;
var s=“!@$%^&*()+=-[]\\\”,./{}\\\\”:?~;
str=f.value;
对于(变量i=0;i
您可以使用标记的模板文本

var str = (s => s.raw)`support\testing`[0]

匿名箭头函数将用作标记,并且
s.raw
包含原始输入

返回
“支持\\测试”“
?请看:您应该退出服务器端,然后发送到JavaScrippty您可以避免使用反斜杠而不是斜杠。我很困惑。要通过更改服务器来避免取消转义,还是在客户端上取消转义?服务器使用什么语言输出值?输出JS数据时应使用正确的json编码。或者更好:
str.replace(/\t/g,'\\t')这也会改变有意的标签,它只是用一个问题换另一个问题。如果它是一个网页,上下文堆栈中可能有更多上下文需要转义。如果它是脚本元素中的字符串输出,那么您需要注意
,因为一般来说,对javascript字符串进行转义并不能解决这个问题:9这实际上是一个注释,而不是一个答案。@Kiamaluno它看起来像一个注释,但也是一个合法的答案,将返回op想要的内容。在这种情况下,你应该扩展它。你写的东西已经在评论中提到了;用户选择写评论是有充分理由的。我会把它改成一份声明,因为你似乎实际上是在向OP提问,而不是回答他。
var str = (s => s.raw)`support\testing`[0]