Javascript regex - получить строку между двумя совпадениями, несколько раз

Я пытаюсь удалить все правила стиля, такие как включая

2 ответа

Проблема здесь

< *style .*>

.* Соответствует всем.

Измените регулярное выражение на

/< *style .*?>([\s\S]*?)< *\/ *style *>/ig

или

/< *style [^>]*>([\s\S]*?)< *\/ *style *>/ig

Обратите внимание, однако, что в настоящее время ваше регулярное выражение пропускает случаи, например

Вы можете использовать фактический синтаксический анализатор HTML.


Лучше избегать этого .* Жадный парень в RegEx. Попробуйте что-нибудь вроде:

text.replace(/< *style[\w"=\/]*>[\w ]*<[ \/]*style *>/ig, '')

DEMO

licensed under cc by-sa 3.0 with attribution.