How to remove backslash escaping from a javascript var?

后端 未结 8 945
轮回少年
轮回少年 2020-12-09 01:58

I have this var

var x = \"
\";

Which is

相关标签:
8条回答
  • 2020-12-09 02:19

    If you want to remove backslash escapes, but keep escaped backslashes, here's what you can do:

    "a\\b\\\\c\\\\\\\\\\d".replace(/(?:\\(.))/g, '$1');
    

    Results in: ab\c\\d.

    Explanation of replace(/(?:\\(.))/g, '$1'):

    /(?:\\) is a non-capturing group to capture the leading backslash

    /(.) is a capturing group to capture what's following the backslash

    /g global matching: Find all matches, not just the first.

    $1 is referencing the content of the first capturing group (what's following the backslash).

    0 讨论(0)
  • 2020-12-09 02:19

    Let me propose this variant:

    function un(v) { eval('v = "'+v+'"'); return v; }
    

    This function will not simply remove slashes. Text compiles as code, and in case correct input, you get right unescaping result for any escape sequence.

    0 讨论(0)
  • 2020-12-09 02:24
    var x = "<div class=\\\"abcdef\\\">";
    alert(x.replace(/\\/gi, ''));
    
    0 讨论(0)
  • 2020-12-09 02:26

    You can replace a backslash followed by a quote with just a quote via a regular expression and the String#replace function:

    var x = "<div class=\\\"abcdef\\\">";
    x = x.replace(/\\"/g, '"');
    document.body.appendChild(
      document.createTextNode("After: " + x)
    );

    Note that the regex just looks for one backslash; there are two in the literal because you have to escape backslashes in regular expression literals with a backslash (just like in a string literal).

    The g at the end of the regex tells replace to work throughout the string ("global"); otherwise, it would replace only the first match.

    0 讨论(0)
  • 2020-12-09 02:42
    '<div class=\\\"abcdef\\\">'.replace(/\\\"/g, '"')
    

    Other answers have you delete all backslashes, you only want to delete the ones befoew the quotes.

    0 讨论(0)
  • 2020-12-09 02:43

    You can use JSON.parse to unescape slashes:

    function unescapeSlashes(str) {
      // add another escaped slash if the string ends with an odd
      // number of escaped slashes which will crash JSON.parse
      let parsedStr = str.replace(/(^|[^\\])(\\\\)*\\$/, "$&\\");
    
      try {
        parsedStr = JSON.parse(`"${parsedStr}"`);
      } catch(e) {
        return str;
      }
      return parsedStr ;
    }
    
    0 讨论(0)
提交回复
热议问题