Ошибки в выражении в исходном сообщении:
1. [\w,\W] - соответствует словному символу, запятой, несловному символу, запятая тут лишняя, она и так несловный символ. Заменяем на [\w\W] (хотя в этом случае принято использовать [\s\S])
2. Звездочка после закрывающей квадратной скобки говорит - найти сколько угодно повторений, причем чем больше, тем лучше. Поэтому сначала выражение пройдет по всей строке, а потом посимвольно будет откатываться назад. Чтобы этого не было, для ускорения, добавляем вопрос, т.е. пишем так [\w\W]*?
3. Прямые слэши в текстовых строчках маскировать нет необходимости.
заменяем text\/javascript на text/javascript и <\/script> на </script>
4. Собственно, из-за чего не работало. Обратные слэши маскоровать в текстовых строках надо обязательно, т.е. [\\w\\W]
После всех этих исправлений:
var htmlJsRe = new RegExp('([\\w\\W]*?)<script type="text/javascript">([\\w\\W]*?)</script>', 'mg');
5. Вызывает сомнение нужность флагов 'mg', а вот флаг 'i' возможно и нужен, вдруг тэги будут написаны большими буквами.
6. <script type="text/javascript"> возможно стоит заменить на <script[^>]*> (кстати, тут после звездочки вопрос ни к чему :-) )
Последний раз редактировалось rgl, 15.02.2013 в 10:59.
|