jquery正则表达式 - 转义html字符和返回

时间:2014-12-10 13:01:35

标签: jquery html regex

我有一些需要转义的html代码然后转换回html ...我到现在为止的代码是......

var entityMap = {
                            "&": "&",
                            "<": "&lt;",
                            ">": "&gt;",
                            '"': '&quot;',
                            "'": '&#39;',
                            "/": '&#x2F;',
                             "\n" : '<br>' 
                          };
                     var entityMaprev = {
                           "&amp;" :"&" ,
                            "&lt;": "<",
                            "&gt;":">" ,
                            '&quot;':'"' ,
                            '&#39;': "'",
                            '&#x2F;': "/",
                            '<br>' : "\n"  
                          };   
                          function escapeHtml(string) {
                            return String(string).replace( /[&<>"'\/]|[\n]/g, function (s) {
                              return entityMap[s];
                            });
                          }
                          function revescapeHtml(string) {
                            return String(string).replace( /[&amp;]|[&lt;]|[&gt;]|[&quot;]|[&#39;]|[&#x2F;]|[<br>]/g, function (s) {
                              return entityMaprev[s];
                            });
                          }

函数escapeHtml(string)工作正常......

我遇到的问题是在函数revescapeHtml中它一直显示为未定义?在函数revescapeHtml中我的正则表达式是否正确?

感谢

1 个答案:

答案 0 :(得分:1)

调整你的正则表达式:

function revescapeHtml(string) {
  return String(string).replace( /(&amp;|&lt;|&gt;|&quot;|&#39;|&#x2F;|<br>)/g, function (s) {
    return entityMaprev[s];
  });
}

revescapeHtml("&amp;")返回&

顺便说一句:如果你想按原样返回"\n"字符串,请调整你的数组:'<br>' : "\\n"