Используя Regex для удаления тегов script

Я пытаюсь использовать выражение Regex, которое я нашел в этом веб-сайте, и это, кажется, не работает. Какие-либо идеи?

Входная строка:

sFetch = "123<script type=\"text/javascript\">\n\t\tfunction utmx_section(){}function utmx(){}\n\t\t(function()})();\n\t</script>456";

Regex:

sFetch = Regex.Replace(sFetch, "<script.*?>.*?</script>", "", RegexOptions.IgnoreCase);
6
задан Luke Girvin 28 October 2016 в 14:52
поделиться

3 ответа

Это немного короче:

 "<script[^<]*</script>"

или

"<[^>]*>[^>]*>"
1
ответ дан 8 December 2019 в 05:54
поделиться

Причина сбоя регулярного выражения заключается в том, что ваш ввод содержит символы новой строки и мета-символ . не соответствует.

Чтобы решить эту проблему, вы можете использовать параметр RegexOptions.Singleline , как говорит С.Марк, или вы можете изменить регулярное выражение на:

"<script[\d\D]*?>[\d\D]*?</script>"

, которое использовало [\ d \ D] вместо . .

\ d - это любая цифра, а \ D - любая нецифровая цифра, поэтому [\ d \ D] является цифрой или нецифровой цифрой, что эффективно любой символ.

8
ответ дан 8 December 2019 в 05:54
поделиться

Добавьте RegexOptions.Singleline

RegexOptions.IgnoreCase | RegexOptions.Singleline

И это никогда не сработает с последующим.

<script
>
alert(1)
</script
/**/
>

Итак, найдите парсер HTML, например HTML Agility Pack

9
ответ дан 8 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: