我正在尝试查找并替换一些特殊的 html 实体,即 '&' 转换为&'>' 转换为>. 这是一个电子邮件生成器工具,一些老客户需要用 html 实体替换字符。
用户传递一个字符串,我使用 javascript 循环遍历一个对象数组。这将找到一个字符并将其替换为正确的 html 实体。
您可以在此处查看我正在使用的正则表达式代码:
https://regex101.com/r/WZh5tA/2
escapeCharacter: function(string){
var replaceChar = [
{reg : '&', replace: '&'},
{reg : '"', replace: '"'},
{reg : '£', replace: '£'},
{reg : '€', replace: '€'},
{reg : 'é', replace: 'é'},
{reg : '–', replace: '–'},
{reg : '®', replace: '®'},
{reg : '™', replace: '™'},
{reg : '‘', replace: '‘'},
{reg : '’', replace: '’'},
{reg : '“', replace: '“'},
{reg : '”', replace: '”'},
{reg : '#', replace: '#'},
{reg : '©', replace: '©'},
{reg : '@', replace: '@'},
{reg : '$', replace: '$'},
{reg : '\\(', replace: '('},
{reg : '\\)', replace: ')'},
{reg : '<', replace: '<'},
{reg : '>', replace: '>'},
{reg : '…', replace: '…'},
{reg : '-', replace: '-'},
{reg : "'", replace: '''},
{reg : '\\*', replace: '*'},
{reg : ',', replace: '‚'}
];
var s = string;
replaceChar.forEach(function(obj){
var regEx = new RegExp(obj.reg+"(?!([^<]+)?>)", "g");
s = s.replace(regEx, obj.replace);
});
return s
}
当用户传递带有 html 标签的字符串时会出现问题(应该允许他们这样做)。例如,字符串可以是:
'This is an example of some <b>bold</b> text'
我的查找和替换工具工作起来很神奇,但我想我错过了一些东西,因为我得到了这个输出:
'This is an example of some <b>bold</b> text'
哔哔one
相关分类