簡體   English   中英

避免在javascript中轉義特殊字符

[英]avoid to escape a special characters in javascript

我的服務器返回值為support\\testing 當我在客戶端獲得這個值時,它可以作為support testing進行轉義。 \\t被轉義為制表符空間。

如何避免在 JavaScript 中轉義特殊字符?

您的服務器需要以正確的轉義方式輸出字符串。

在這種情況下,您需要在輸出中使用反斜杠字符; 反斜杠是一個特殊字符,因此應該對其進行轉義。

反斜杠的轉義序列是\\\\ (即兩個反斜杠),但您不需要考慮特定的轉義碼——如果您正在輸出 JS 數據,您應該使用整個字符串的正確轉義來輸出它,這通常意味着您應該使用 JSON 編碼。

如今,大多數服務器語言都提供 JSON 編碼作為內置功能。 您還沒有指定您的服務器使用的是哪種語言,但例如,如果它是用 PHP 編寫的,您可以將字符串輸出為json_encode($string)而不是直接輸出$string 其他語言提供了類似的功能。 這不僅可以保護您免受損壞的反斜杠字符,還可以防止其他錯誤,例如字符串中的引號或換行符,如果您將它們作為未轉義的字符串放入 Javascript 代碼中,也會導致錯誤。

您可以使用標記的模板文字

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

匿名箭頭函數將作為標簽, s.raw包含原始輸入

如果您能夠更改服務器端代碼,您應該在那里添加轉義字符: "support\\\\testing"

這將導致預期的結果。

你可以做一個簡單的替換:

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

並為您需要替換的其他字符執行此操作。

最佳解決方案

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;
            }
        }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM