Forum Discussion

walkerline117's avatar
walkerline117
Contributor
8 years ago
Solved

Best way to escape special char of html

Hi,

I would like to escape special HTML characters of a string. e.g. <>,',",@ etc…

I know i can use ‘replace’ method to replace all of those characters one by one with the encoded ones, but is there any better way to do this in a mapper with expression?

BTW, I tried to use replace like this
.replace(/[&<>"'` !@$%()=+{}]/g, function(x){ return ‘&#’ + x.charCodeAt(0) + ‘;’})

but the mapper keeps throwing me errors as it seems the second parameter of the replace method cannot be a function?

Thanks

  • The second parameter can be a function, but there’s a bug caused by the regex not having escapes for the square brackets. Del’s version of the regex works:

    However, the second parameter is going to replace with the char code for ‘$’ and not the character that matched the regex. The second parameter needs to be an arrow function, like so:

    .replace(/([&<>"'` !@$%()=+{}\[\]])/g, x => ‘&#’ + x.charCodeAt(0) + ‘;’)
    

5 Replies

  • del's avatar
    del
    Contributor III

    Try the following:
    .replace(/([&<>"' !@$%()=+{}\[\]])/g, '&#' + '$1'.charCodeAt(0) + ';')
    (note: the back-single-quote after "' was removed by the board since I used the preformat option)

    • tstack's avatar
      tstack
      Former Employee

      The second parameter can be a function, but there’s a bug caused by the regex not having escapes for the square brackets. Del’s version of the regex works:

      However, the second parameter is going to replace with the char code for ‘$’ and not the character that matched the regex. The second parameter needs to be an arrow function, like so:

      .replace(/([&<>"'` !@$%()=+{}\[\]])/g, x => ‘&#’ + x.charCodeAt(0) + ‘;’)
      
      • del's avatar
        del
        Contributor III

        Hah! @tstack, I was trying to beat you to the best answer and you still schooled me! 🙂