Обратная ссылка на каждого персонажа - PullRequest
0 голосов
/ 02 октября 2011

Для простоты и изучения чего-то нового, пожалуйста, не предлагайте использовать две отдельные функции замены.Я знаю, что это вариант, но я бы предпочел также знать, как это сделать (или, если это невозможно).

'<test></test>'.replace(/<|>/g,'$&'.charCodeAt(0))

Это то, что я получил до сих пор.Этот пример кода, как вы можете сказать, предназначен для другого фрагмента кода, который экранирует сущности HTML, все еще используя innerHTML (потому что я намерен включить несколько сущностей HTML, таких как небольшие изображения, поэтому, опять же, не предлагайте textContent).

Поскольку я пытаюсь заменить и <, и >, проблема заключается в преобразовании каждого из них в соответствующие им коды символов.Поскольку регулярные выражения допускают это условие «ИЛИ», а также обратные ссылки на каждое из них, я надеюсь, что есть способ получить ссылку на каждый отдельный символ по мере его замены.$& вернет <><> (потому что они заменяются в таком порядке), но я не знаю, как получить их, когда они заменены, и взять их коды символов для сущностей HTML.Проблема в том, что я не знаю, что использовать в этом случае, если что-нибудь.

Если это объяснение не было достаточно ясным, я хочу, чтобы оно было примерно таким (и это, очевидно, не сработает)лучше всего передать то, что я имею в виду):

Предполагая x - индекс заменяемого символа,

'<test></test>'.replace(/<|>/g,'$&'.charCodeAt(x))

Надеюсь, это имеет больше смысла.Итак, возможно ли это как-то?

1 Ответ

2 голосов
/ 02 октября 2011
'<test></test>'.replace(/[<>]/g,function(a) {return '&#'+a.charCodeAt(0)+';';});

Я поместил символы в квадратные скобки (не знаю, как это правильно). Таким образом, вы можете добавлять любые символы, которые вы хотите.

Выше вернется:

&#60;test&#62;&#60;/test&#62;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...