JSFiddle - React, Tailwind, and code Playground

by Philip Kahn

HTML

<p id="escaped"></p>
<p id="unescaped"></p>

CoffeeScript

unEscape = (str, strict = false) ->
  ###
  # Take escaped text, and return the unescaped version
  ###
  # Create a dummy element
  element = document.createElement("div")
  decodeHTMLEntities = (str) ->
    if str and typeof str is "string"
      unless strict is true
        # escape HTML tags
        str = escape(str).replace(/%26/g,'&').replace(/%23/g,'#').replace(/%3B/g,';')
      else
        str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '')
        str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '')
      element.innerHTML = str
      if element.innerText
        # Do we support innerText?
        str = element.innerText
        element.innerText = ""
      else
        # Firefox
        str = element.textContent
        element.textContent = ""
    unescape(str)
  decodeHTMLEntities(str)

# Test your string here
text = "&quot;default&#95;level&quot;"


$("#escaped").text text
$("#unescaped").text unEscape(text)