避免在javascript中转义特殊字符

时间:2013-07-09 15:12:42

标签: javascript

我的服务器返回值为support\testing。当我在客户端获得此值时,可以将其转义为support testing\t作为标签空间进行转义。

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

5 个答案:

答案 0 :(得分:10)

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

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

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

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

答案 1 :(得分:2)

如果您能够更改服务器端代码,则应在其中添加转义字符:"support\\testing"

这将产生预期的结果。

答案 2 :(得分:2)

您可以使用标记的模板文字

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

匿名箭头功能将用作标记,s.raw包含原始输入

答案 3 :(得分:0)

你可以做一个简单的替换:

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

为需要替换的其他角色执行此操作。

答案 4 :(得分:-1)

最佳解决方案

function valid(f) {            
        debugger;
        var s = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?~";
        str = f.value;
        for (var i = 0; i < str.length; i++) {
           if (s.indexOf(str.charAt(i)) != -1) {
              //alert("The box has special characters. \nThese are not allowed.\n");
              f.value = f.value.replace(str.charAt(i), '');// : null;
              return false;
            }
        }
 }