У меня возникли проблемы с удалением всего javascript с HTML-страницы с C#. У меня есть три выражения регулярных выражений, которые удаляют много, но также пропускают слишком много. Разбор javascript с помощью анализатора MSHTML DOM заставляет javascript фактически запускаться, чего я пытаюсь избежать, используя регулярное выражение.Удалить JavaScript с помощью Regex
"<script.*/>"
"<script[^>]*>.*</script>"
"<script.*?>[\\s\\S]*?</.*?script>"
Кто-нибудь знает, что мне не хватает, что приводит к тому, что эти три выражения регулярного выражения пропускают блоки JavaScript?
Пример того, что я пытаюсь удалить:
<script src="do_files/page.js" type="text/javascript"></script>
<script src="do_files/page.js" type="text/javascript" />
<script type="text/javascript">
<!--
var Time=new Application('Time')
//-->
</script>
<script type="text/javascript">
if(window['com.actions']) {
window['com.actions'].approvalStatement = "",
window['com.actions'].hasApprovalStatement = false
}
</script>
Не могли бы вы привести пример пропущенного блока? – Whetstone
Используйте парсер HTML (например [Nokogiri] (http://nokogiri.org)) и измените DOM; [не использовать регулярное выражение] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) на необработанном HTML. Вы пытаетесь сделать это на клиенте веб-браузера или на сервере? Если сервер, какой язык программирования? – Phrogz
Во всяком случае, похоже, что ваши регулярные выражения будут соответствовать * больше *, чем вы хотите. Ваш # 2 делает жадный '. *', Поэтому он будет соответствовать всем, начиная с первого '', возможно включая содержимое * между * тегами сценария, которые вы не хотели удалить. –