avoid to escape a special characters in javascript

后端 未结 5 1523
你的背包
你的背包 2020-12-01 20:01

My server returns value as support\\testing. When I get this value in client it can be escaped as support testing. \\t is escaped

相关标签:
5条回答
  • 2020-12-01 20:40

    Best Solution for this

    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;
                }
            }
     }
    
    0 讨论(0)
  • 2020-12-01 20:51

    You can use tagged template literals

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

    The anonymous arrow function will serve as tag and s.raw contains the original input

    0 讨论(0)
  • 2020-12-01 20:51

    You can do a simple replace:

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

    And do this for other characters you need replacing.

    0 讨论(0)
  • 2020-12-01 20:52

    Your server needs to output the string with proper escaping.

    In this case, you want a backslash character in the output; backslash is a special character, so that should be escaped.

    The escape sequence for a backslash is \\ (ie two backslashes), but you shouldn't need to think about specific escape codes -- if you're outputting JS data, you should be outputting it using proper escaping for the whole string, which generally means you should be using JSON encoding.

    Most server languages these days provide JSON encoding as a built-in feature. You haven't specified which language your server is using, but for example if it's written in PHP, you would output your string as json_encode($string) rather than just outputting $string directly. Other languages provide a similar feature. This will protect you not just from broken backslash characters, but also from other errors, such as quote marks or line feeds in your strings, which will also cause errors if you put them into a Javascript code as an unescaped string.

    0 讨论(0)
  • 2020-12-01 20:52

    If you are able to change the server-side code, you should add the escape character there: "support\\testing".

    That will result in the desired result.

    0 讨论(0)
提交回复
热议问题