Я пытаюсь избежать подмножества уценки, которые поддерживаются Discord (*
, _
, , ~
). Символы, которые уже экранированы, не должны иметь дополнительных обратных косых черт. Это то, что у меня есть:Эскиз подмножества разметки уценки
function escapeMarkdown(text) {
\t return text.replace(/([^\\]|^|\*|_|`|~)(\*|_|`|~)/g, '$1\\$2');
}
console.log(escapeMarkdown('*test* _string_ ~please~ `ignore` *_`~kthx \* \\~'));
Это прекрасно работает, минус тот факт, что несколько символов уценки друг против друга не будут все убежали. Я не уверен, как расширить это, чтобы это сделать, не делая выражения абсурдно сложными.
Если персонаж уже имеет обратную косую черту перед ним, это не обязательно означает, что это экранированный, например '\\ ~' – qxz
@qxz Вы совершенно правы. – Gawdl3y