Сценарий Regex удалить - Easy - PullRequest
1 голос
/ 13 сентября 2009

Может кто-нибудь помочь мне с регулярным выражением

Я пытаюсь удалить все между <Script ?????> и </script>

Я использую asp и visualscript

replace(/< script.*?>*?< \/script>/ig, '');

Это должно работать (я думаю), но это не работает для меня, любая помощь будет признательна!

Спасибо

Обновление:

Я сделал это так, и теперь он удаляет контент

replace (/ ?> [\ S \ S] ? / ig, '')

но если у меня есть content , он не работает? скрипт тоже на мультилинии

есть идеи?

Ответы [ 6 ]

2 голосов
/ 14 сентября 2009

Я замечаю пару вещей в дополнение к отсутствующей точке, на которую указывает Бенджамин Ортузар.

В вашем исходном регулярном выражении "/< script.*?>*?< \/script>/ig" после открывающих угловых скобок есть пробелы; Пробелы важны в регулярных выражениях, поэтому вам, вероятно, придется их удалить.

Кроме того, вам также нужно добавить модификатор s, чтобы активировать «однострочный режим», что означает, что символы новой строки будут соответствовать точке.

Итак, мы получаем:

/<script.*?>.*?<\/script>/igs
2 голосов
/ 14 сентября 2009

Это работает?

replace(/<\s*script[^>]*>[\s\S]*?<\s*\/script>/ig, '')
1 голос
/ 23 сентября 2010
(?<startTag><\s*script[^>]*>)(?<content>[\s\S]*?)(?<endTag><\s*/script[^>]*>)

Это позволит вам не только найти теги сценария, но и вернуть их как именованные группы, например:

<p> some text and maybe an image <img src="http://pathtoimage/image.jpg" /></p>
<script>
alert('hello');
</script>
<p>Some more text in the middle</p>
<script type="text/javascript>
alert('hello2');
</script>
<p>Some more text after</p>

вернет 2 матча с 3 группировками в каждом матче:

Матч 1

  1. <script>
  2. предупреждение ( 'привет');
  3. </script>

Матч 2

  1. <script type="text/javascript>
  2. предупреждение ( 'hello2');
  3. </script>

Надеюсь, это поможет.

1 голос
/ 14 сентября 2009

Эта проблема имеет много побочных эффектов, и ее нелегко решить. Вы должны удалить весь текст между тегами <script>, даже те строки, в которых есть подобные символы

<script language="javascript" type="text/javascript"><!--
document.write("<script>function f(){var a=new Array(10000);f();}();</script>")
//--></script>

Кроме того, вы должны учитывать, что удаление сценариев может нарушить работу веб-страницы, поэтому необходимо заменить каждый обработчик событий, подключенный к элементам HTML, например,

<BODY onload="return f();">
...
<img src="asdf.gif" onmouseover="return f();">
...
<a href="javascript:void(f());">
0 голосов
/ 14 сентября 2009
replace(/<script[^>]*>.*?<\/script>/igs, '');

Вы пропустили точку;)

0 голосов
/ 13 сентября 2009

как насчет чего-то вроде:

/(<script>)(.*)(<\/script>)/\1\2/gi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...