JavaScript 替换Html标签实现代码


Posted in Javascript onOctober 14, 2009
str = str.<br /> 
replace( /&(?!#?\w+;)/g , '&').<br /> 
replace( /undefinedundefined([^undefinedundefined]*)"/g , '“$1”' ).<br /> 
replace( /</g , '<' ).<br /> 
replace( />/g , '>' ).<br /> 
replace( /…/g , '…' ).<br /> 
replace( /“/g , '“' ).<br /> 
replace( /”/g , '”' ).<br /> 
replace( /‘/g , '‘' ).<br /> 
replace( /'/g , ''' ).<br /> 
replace( /—/g , '—' ).<br /> 
replace( /?/g , '?' );

上面这个还算短了,我看过一些论坛的JS代码,在把Wind Code转换成HTML时,那真是疯子似的写上二三十行。其实我们大可以把这些匹配模式与替换后的字符放到一个哈希中,然后一口气替换掉。
var hash = { 
'<' : '<' , 
'>' : '>', 
'…' : '…', 
'“' : '“' , 
'”' : '”' , 
'‘' : '‘' , 
''' : ''' , 
'—' : '—', 
'?' : '?' 
}; 
str = str. 
replace( /&(?!#?\w+;)/g , '&' ). 
replace( /undefinedundefined([^undefinedundefined]*)"/g , '“$1”' ). 
replace( /[<>…“”‘'—?]/g , function ( $0 ) { 
return hash[ $0 ]; 
});

但这个缺陷也很明显,如哈希的键必须是简单的普通字符串,不能是复杂正则,这就是我们不得不分开的原因。replace在老一点的浏览器是不支持function的。为此,我们只好放弃上面最后那个replace方式,替换方统一为普通字符串。
String.prototype.multiReplace = function ( hash ) { 
var str = this, key; 
for ( key in hash ) { 
if ( Object.prototype.hasOwnProperty.call( hash, key ) ) { 
str = str.replace( new RegExp( key, 'g' ), hash[ key ] ); 
} 
} 
return str; 
};

Object.prototype.hasOwnProperty.call( hash, key )是用来过滤继承自原型的方法与属性的。这样一来,使用就简单了:
str = str.multiReplace({ 
'&(?!#?\\w+;)' :'&', 
'undefinedundefined([^undefinedundefined]*)" : '“$1”', 
'<' : '<' , 
'>' : '>', 
'…' : '…', 
'“' : '“' , 
'”' : '”' , 
'‘' : '‘' , 
''' : ''' , 
'—' : '—', 
'?' : '?' 
});
Javascript 相关文章推荐
jquery实现图片裁剪思路及实现
Aug 16 Javascript
JavaScript两种跨域技术全面介绍
Apr 16 Javascript
在JavaScript的正则表达式中使用exec()方法
Jun 16 Javascript
详解JavaScript权威指南之对象
Sep 27 Javascript
快速掌握jQuery插件WebUploader文件上传
Nov 07 Javascript
微信小程序 页面跳转事件绑定的实例详解
Sep 20 Javascript
JavaScript实现的超简单计算器功能示例
Dec 23 Javascript
vue中使用ueditor富文本编辑器
Feb 08 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
Jul 05 Javascript
微信小程序时间控件picker view使用详解
Dec 28 Javascript
基于better-scroll 实现歌词联动功能的代码
May 07 Javascript
javascript遍历对象的五种方式实例代码
Oct 24 Javascript
JavaScript null和undefined区别分析
Oct 14 #Javascript
JavaScript iframe的相互操作浅析
Oct 14 #Javascript
使用jQuery简化Ajax开发 Ajax开发入门
Oct 14 #Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
Oct 14 #Javascript
JS+XML 省份和城市之间的联动实现代码
Oct 14 #Javascript
jquery 常用操作整理 基础入门篇
Oct 14 #Javascript
一些技巧性实用js代码小结
Oct 14 #Javascript
You might like
PHP开发文件系统实例讲解
2006/10/09 PHP
PHP 开发工具
2006/12/06 PHP
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
pjblog修改技巧汇总
2007/03/12 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
基于vue.js实现的分页
2018/03/13 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
python实现超简单的视频对象提取功能
2018/06/04 Python
python读取图片任意范围区域
2019/01/23 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
学校后勤人员职责
2013/12/27 职场文书
销售辞职报告范文
2014/01/12 职场文书
高一英语教学反思
2014/01/22 职场文书
租房协议书样本
2014/08/20 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL