Удалить сценарии из строки html с помощью регулярных выражений - PullRequest
0 голосов
/ 18 февраля 2020

Я хочу удалить теги <script> из строки html с помощью регулярных выражений.

У меня есть следующий код, который работает, но не работает, когда вы возвращаетесь в сценарии обратно:

function removeScriptsFromHtmlStr(html) {
  const regex = /<script(?:(?!\/\/)(?!\/\*)[^'"]|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\/\/.(?:\n)|\/\*(?:(?:.|\s))*?\*\/)*?<\/script>/;
  const result = html.replace(regex, '');
  return result;
}

Так, например:

выполнение этого через функцию будет нормально работать

<script>alert(document.cookie);</script>

, но это не будет:

<script>alert(document.cookie);</script><script>alert(document.cookie);</script>

Как я могу обновить регулярное выражение, чтобы это исправить?

Ответы [ 3 ]

0 голосов
/ 18 февраля 2020

попробуйте это регулярное выражение

/<script.*?>.*?<\/script>/igm

{ ссылка }

0 голосов
/ 18 февраля 2020

Поскольку JavaScript не поддерживает флаг Singleline /s, вам нужно будет обойти эту проблему для .:

/<script.*?>[\s\S]*?<\/script>/gi

https://regex101.com/r/7iFLnA/1

0 голосов
/ 18 февраля 2020

Ленивая загрузка должна помочь <script>(.+?)<\/script>

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