正则的替换问题

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;省略了&,会被识别为< >)上面是自己写的一个函数,正则可否优化成一个正则表达式?


萧十郎
浏览 432回答 1
1回答

jeck猫

正则表达式的分组匹配:/(&lt;|&gt;)/gvar test = '&lt;span&gt;'.replace(/(&lt;|&gt;)/g, function(m) {&nbsp; &nbsp; if(m == '&lt') {&nbsp; &nbsp; &nbsp; &nbsp; return '<';&nbsp; &nbsp; } else if(m == '&gt') {&nbsp; &nbsp; &nbsp; &nbsp; return '>';&nbsp; &nbsp; }});下面是稍微好点的方法:但是有几个问题,Object.keys的兼容问题,如果map的key中包含要转义的字符,例如'.'等。需要在转换前处理,或者写key的时候注意。var map = {&nbsp; &nbsp; '&lt;' : '<',&nbsp; &nbsp; '&gt;' : '>'};var test = '&lt;span&gt;'.replace(new RegExp('(' + Object.keys(map).join('|') + ')', 'g'), function(m) {&nbsp; &nbsp; return map[m];});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript