Проблема восстановления HTML между скобками с регулярным выражением - PullRequest
0 голосов
/ 16 января 2019

Я пришел к вам сегодня, потому что столкнулся с небольшой проблемой, которая блокировала меня довольно долгое время:

для автоматизации оцифрованного контракта на управление я использую переменную home в строке HTML с помощью редактора WYSIWYG, форма которого «[[[NAME OF VARIABLE]]]». Затем я извлекаю эти переменные и преобразовываю их в текстовые поля, чтобы пользователь мог заполнить их через форму.

Я сейчас использую Angular 5.

Меня беспокоит то, что одна из этих переменных перепуталась с редактором и выдает ее во время восстановления в JS:

'[[[blablabla</span><span style="background-color: rgb(255, 255, 255);">]]]',

Таким образом, при назначении значений, представленных пользователем, это не учитывается. То, что я намеревался сделать, это сделать регулярное выражение для замены HTML-кода вакуумом, но это блок I, который я тестировал и я добрался до этой стадии:

/\[\[\[(<[^>]+>)\]\]\]/gi

но я признаюсь, что для меня и регулярного выражения это 10: D

Может кто-нибудь разблокировать меня? Если вам нужно больше подробностей, не беспокойтесь!

Заранее спасибо!

(простите за мой английский, я француз)

1 Ответ

0 голосов
/ 16 января 2019

Вы можете сопоставить все подстроки между [[[ и ]]] и затем заменять только подстроки, соответствующие шаблону <[^<>]+>, внутри этих совпадений:

s = s.replace(/\[\[\[[\s\S]*?]]]/g, function (m) { 
    return m.replace(/<[^<>]+>/g, ''); 
})

Первый шаблон соответствует

  • \[\[\[ - подстрока [[[
  • [\s\S]*? - любые 0+ символов, как можно меньше
  • ]]] - подстрока ]]].

Модификатор g находит несколько вхождений шаблона внутри входной строки. Совпадение передается методу обратного вызова (m - сопоставленный текст), а .replace(/<[^<>]+>/g, '') применяется только к тексту m, который возвращается после <, 1+ символов, отличных от < и > а затем > совпадения заменяются пустой строкой.

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