使用 Javascript 和正则表达式替换 HTML 字符
Using Javascript and Regex to replace HTML Characters
提前感谢您的帮助。
我需要在应用程序中删除所有 HTML 字符并将它们替换为等效的 HTML 编号。
例如:
‡, •, -, ‰, € and ™
成为:
‡, •, -, ‰, € and ™
目前有很多问题,但这些问题恰恰相反。
我有我想在 JSON 对象中转换的所有字符(这只是一个更大列表的快照,只是为了证明我的 JSON 很好):
{"ch":"‘","sub":"‘"},
{"ch":"’","sub":"’"},
{"ch":"‚","sub":"‚"},
{"ch":"“","sub":"“"},
{"ch":"”","sub":"”"},
{"ch":"„","sub":"„"},
{"ch":"†","sub":"†"},
{"ch":"‡","sub":"‡"},
{"ch":"•","sub":"•"},
...
我目前循环(在这里使用原型)并尝试替换它们:
oJSONItems.each(function(o){
var oRG = new RegExp(o.ch,'g');
oText = oText.replace(oRG,o.sub);
});
有些正在被替换,但有些没有...
‡
•
-
‰
€
™
最重要的是,我需要知道为什么像字符一样™无法转换。
谢谢。
与其为特定实体编写代码,不如替换原始 7 位 ASCII 范围之外的任何内容
:str = str.replace(/[^'011'012'015'040-'177]/g, function(x) {
return '&#' + x.charCodeAt(0) + ';'
})
(正则表达式匹配任何不是空格或"正常"ASCII 字符的内容)
或者,编写映射,使键是要替换的字符,值是实体:
var map = { '£' : '£' }
str = str.replace(/./g, function(x) {
return (x in map) ? map[x] : x;
});
请注意,两个版本只对集合中的每个可能实体进行一次正则表达式调用,而不是一次。 这应该使代码比基于循环的方法快一些。
相关文章:
- 正在转义javascript数组中的html字符
- AngularJs正在解码HTML字符(不需要)
- 如何在不支持HTML字符的邮件正文中发送%签名
- 如何使用 html 字符解析 javascript 中的字符串
- 转义我的 HTML 字符
- 在某些浏览器中,jquery.html()正在取消转义html字符
- 使用 JQuery 插入 HTML 字符实体
- 使用 Javascript 和正则表达式替换 HTML 字符
- JavaScript 不会转换特殊的 HTML 字符
- 我可以根据换行动态隐藏 html 字符吗?
- 将句点替换为 HTML 字符
- 在谷歌修饰的前元素中保留 html 字符
- 加载 tinyMCE 时的默认 html 字符
- Javascript替换HTML字符
- CKEDITOR getData()返回html字符实体(unicode),但如何获得未翻译的字符
- 如何使用angularjs在CSS伪元素中显示HTML字符实体
- 使用JavaScript拆分字符串,但忽略其中的HTML字符
- jQuery(或JS)解码字符串中的HTML字符实体
- Javascript/jQuery:如何将字符串转换为HTML字符代码
- 转换特殊的HTML字符代码,如"到正常的字符