为了账号安全,请及时绑定邮箱和手机立即绑定

正则的替换问题

正则的替换问题

萧十郎 2018-12-28 23:18:53
function replaceTagToEntitySymbol(html){    var s = html.replace(/</g,'&lt;')        s = s.replace(/>/g,'&gt;')    return s;}这是一个字符串'<div class="html-editor-pop"><p class="html-editor-code-desc">生成代码,可复制粘贴使用:</p><textarea class="html-editor-code"></textarea></div>'希望用正则替换<符号到 lt; > 符号到 gt;(lt;和gt;省略了&,会被识别为< >)上面是自己写的一个函数,正则可否优化成一个正则表达式?
查看完整描述

1 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

正则表达式的分组匹配:/(&lt;|&gt;)/g


var test = '&lt;span&gt;'.replace(/(&lt;|&gt;)/g, function(m) {

    if(m == '&lt') {

        return '<';

    } else if(m == '&gt') {

        return '>';

    }

});

下面是稍微好点的方法:


但是有几个问题,Object.keys的兼容问题,如果map的key中包含要转义的字符,例如'.'等。需要在转换前处理,或者写key的时候注意。


var map = {

    '&lt;' : '<',

    '&gt;' : '>'

};

var test = '&lt;span&gt;'.replace(new RegExp('(' + Object.keys(map).join('|') + ')', 'g'), function(m) {

    return map[m];

});


查看完整回答
反对 回复 2019-01-11
  • 1 回答
  • 0 关注
  • 428 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信