Я пытаюсь найти и заменить некоторые специальные 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'