匹配<、>、&、&lt;、&gt;、&amp;六种字符的正则

求一个匹配<、>、&、&lt;、&gt;、&amp;六种字符的正则,谢谢

阅读 4.9k
1 个回答

这种东西嘛,为了简单,首先对实体字符转义成正常字符:

/**
 *  转义字符还原成html字符
 * @param str
 * @returns {string}
 * @constructor
 */
function htmlRestore(str) {
  var s = "";
  if (str.length === 0) {
    return "";
  }
  s = str.replace(/&amp;/g, "&");
  s = s.replace(/&lt;/g, "<");
  s = s.replace(/&gt;/g, ">");
  s = s.replace(/&nbsp;/g, " ");
  s = s.replace(/&#39;/g, "\'");
  s = s.replace(/&quot;/g, "\"");
  return s;
}

然后再正则匹配<、>、&就行了,匹配的正则表达式复杂度就降低了。
转换后再执行匹配就行了:
示例:

let str = "dlfj&jasldjfl<ldfjlas>ljdlfjds&";
str.search(/[<>&]/g)

以上是得到匹配到的字符次数。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题