- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
В переменной x есть код:
<div id="str">Текст 1</div>
<div id="str">Текст 2</div>
<div id="str">Текст 3</div>
Я пытаюсь разбить его на массив, чтобы в каждом эллементе массива было по одному блоку.
Делаю следующим образом:
x = x.match(/<div class=\"str\">(.+)<\/div>/g)
На выходе получаю массив с одним элементом:
x[0] = '<div id="str">Текст 1</div>
<div id="str">Текст 2</div>
<div id="str">Текст 3</div>'
Т.е. учитывается самый первый открывающий тег и самый последний закрывающий.
Скажите, как прописать регулярное выражение, чтобы разбить массив на 3 элемента:
x[0] = '<div id="str">Текст 1</div>'
x[1] = '<div id="str">Текст 2</div>'
x[2] = '<div id="str">Текст 3</div>'
Спасибо!
И пример у вас немного некорректный - в данных у вас id="str", а ищете class="str" .
И вообще, id должен быть уникальным, поэтому нечего ему там делать
В переменной x есть код:
<div id="str">Текст 1</div>
<div id="str">Текст 2</div>
<div id="str">Текст 3</div>
Я пытаюсь разбить его на массив, чтобы в каждом эллементе массива было по одному блоку.
Делаю следующим образом:
x = x.match(/<div class=\"str\">(.+)<\/div>/g)
На выходе получаю массив с одним элементом:
x[0] = '<div id="str">Текст 1</div>
<div id="str">Текст 2</div>
<div id="str">Текст 3</div>'
Т.е. учитывается самый первый открывающий тег и самый последний закрывающий.
Скажите, как прописать регулярное выражение, чтобы разбить массив на 3 элемента:
x[0] = '<div id="str">Текст 1</div>'
x[1] = '<div id="str">Текст 2</div>'
x[2] = '<div id="str">Текст 3</div>'
Спасибо!
Как вариант:
У Вас тут дело в том, что строка полостью подходит под ваш шаблон, т.е.
x[0] = '<div id="str">(Текст 1</div>
<div id="str">Текст 2</div>
<div id="str">Текст 3) == (.+)</div>'
У Вас тут дело в том, что строка полностью подходит под ваш шаблон
Это если переносы строк не использовать, а так бы прокатило. BBкод
А зачем регулярка?
wrap.innerHTML= '<div id="str">Текст 1</div> <div id="str">Текст 2</div> <div id="str">Текст 3</div>';
wrap.childNodes[0]; // <div id="str">Текст 1</div>
wrap.childNodes[1]; // <div id="str">Текст 2</div>
wrap.childNodes[2]; // <div id="str">Текст 3</div>
Еще один вариант (кривой, но рабочий):
str = str.split('</div>');
alert( str[0] + '</div>' ); // <div id="str">Текст 1</div>
alert( str[1] + '</div>' ); // <div id="str">Текст 2</div>
alert( str[2] + '</div>' ); // <div id="str">Текст 3</div>
ТС, советую почитать Жадные и ленивые квантификаторы.
Спасибо огромное за варианты! По первому совету уже все заработало.
И пример у вас немного некорректный - в данных у вас id="str", а ищете class="str" .
Со знаком вопроса все заработало. Но я никак не могу понять смысла этого выражения.
? - означает, что предыдущий символ или регулярное выражение встречается 0 или 1 раз. Предыдущий символ - знак + который указывает на то, что предыдущий символ или выражение встречается 1 или более раз. Перед плюсом точка - любой символ, кроме переноса строки.
Как это понимать применительно к поставленной выше задаче?
Как это понимать применительно к поставленной выше задаче?
Знак "?" в этом случае отключает жадность. Как альтернатива - [^<]. И круглые скобки там ни к чему, если маску использовать не собираетесь.
? - означает, что предыдущий символ или регулярное выражение встречается 0 или 1 раз.
Если он бы был сам по себе. А тут он переключает конструкцию .+ из жадного в ленивый режим. Даже по названию понятно, чем они отличаются.:)
По ссылке rereg все подробно расписано. :)