RegEx для получения атрибутов и тела тегов скрипта - PullRequest
1 голос
/ 17 ноября 2009

Я использую это регулярное выражение, чтобы найти теги:

<script (.|\n)*>(.|\n)*?</script>

Проблема в том, что она соответствует ВСЕЙ строке ниже, а не только каждому тегу в отдельности:

<script src="crap2.js"></script><script src="crap2.js"></script>

Ответы [ 7 ]

8 голосов
/ 17 ноября 2009

По этой и другим причинам вам лучше использовать DOM для обработки HTML.

7 голосов
/ 17 ноября 2009

Также смотрите ужас кодирования на этой неделе: Разбор HTML-кода Путь Ктулху , вдохновленный эпическим ответом @ bobince , на который @JS Bangs ссылается.

7 голосов
/ 17 ноября 2009

измените свой первый * на *?

Это не жадное совпадение «все», поэтому оно будет соответствовать наименьшему набору символов перед следующим «>».

7 голосов
/ 17 ноября 2009

Не думаю, что нужно говорить что-то еще, кроме RegEx соответствует открытым тегам, кроме автономных тегов XHTML .

2 голосов
/ 17 ноября 2009

Я оставлю отправлю ссылки на мой предыдущий отвечает до тех пор, пока этот тип вопроса не будет стерт с поверхности планеты (возможно, через 10 лет): не используйте регулярные выражения для нерегулярных языков, таких как html или xml. Вместо этого используйте парсер.

0 голосов
/ 17 ноября 2009
<script[\s\S]*?>[\s\S]*?</script>

Это соответствует большинству обычных ситуаций, но это очень важно учитывать JS Bangs ответ .

0 голосов
/ 17 ноября 2009

попытаться исключить любое '<' из содержимого </p>

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