Форум программистов, компьютерный форум, киберфорум
JavaScript: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/140: Рейтинг темы: голосов - 140, средняя оценка - 4.59
 Аватар для mazahist
35 / 35 / 26
Регистрация: 27.05.2012
Сообщений: 204

Поиск тегов через регулярное выражение

15.08.2014, 22:47. Показов 26595. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, как с помощью регулярного выражения найти:
HTML5
1
<span id='e145'>привет</span>
и ей подобные строки.
P.S. простите, что написал в эту папку
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.08.2014, 22:47
Ответы с готовыми решениями:

Регулярное выражение для удаления всех тегов, кроме указанных
вот регулярка. она очищает только те теги, которые указаны. а мне нужно наоборот. очищать все теги, кроме указанных. кто поможет изменить? ...

Ввод даты через регулярное выражение
В общем, такой вопрос. Есть на форме поле &quot;дата&quot;. Туда вводится дата по заданному шаблону дд.мм.гггг. Вот код: var regTestDate =...

Распарсить url, используя регулярное выражение
Всем привет. Использую динамическое переключение страниц и по индификатору 'page' получаю какую страницу запросил пользователь из ссылки. ...

14
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
15.08.2014, 23:04
Например:
JavaScript
1
document.body.innerHTML.match(/<span.*?><\/span>/ig);
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
16.08.2014, 07:04
Цитата Сообщение от FraidZZ Посмотреть сообщение
(/<span.*?><\/span>/ig);
Ни чего не найдёт, между тегов много чего может быть.
Толком не помню, но может быть проблема с многострочностью.
0
Модератор
 Аватар для Thisman
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
16.08.2014, 09:20
mazahist,

JavaScript
1
(/<span.*?>*?<\/span>/ig); вот так тогда, учитывается и то что внутри тега самого
0
 Аватар для mazahist
35 / 35 / 26
Регистрация: 27.05.2012
Сообщений: 204
16.08.2014, 12:48  [ТС]
Приведу конкретный пример html:
HTML5
1
2
3
4
5
6
7
8
<div id="d">
<span id='e145'>привет</span>
тут некий текст и другие теги<h2>что-нибудь написано</h2>
<span id='e715'>это </span>
<span id='e194'>пользователь</span>
тут тоже некий текст
<span id='e547'>max_lol</span>
</div>
Нужно внутри дива найти теги спан. Должно получиться что-то типа:
JavaScript
1
2
3
4
result[0]="<span id='e145'>привет</span>";
result[1]="<span id='e715'>это </span>";
result[2]="<span id='e194>пользователь</span>";
result[3]="<span id='e547'>max_lol</span>";
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
16.08.2014, 13:27
mazahist, Thisman же привёл regexp. (только чуток поправлю)
JavaScript
1
var result = document.querySelector("#d").innerHTML.match(/<span.*?>.*?<\/span>/ig);
1
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
18.08.2014, 23:08
mazahist, FraidZZ, очень похоже, что речь про браузер. Тогда зачем искать теги регулярками???
JavaScript
1
document.querySelectorAll("#d span[id^=e]")
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
18.08.2014, 23:35
Qwertiy, так мы получаем узлы DOM. А регуляркой - чистый HTML код. Можно использовать outerHTML, но, насколько мне известно, это не канон и не стандарт.

Добавлено через 1 минуту
Вообще, да, в идеале это необходимо получать с помощью DOM и обхода всех атрибутов.
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
18.08.2014, 23:51
Цитата Сообщение от FraidZZ Посмотреть сообщение
так мы получаем узлы DOM. А регуляркой - чистый HTML код.
А почему нельзя получить нужные данные из элемента?
Ну или в крайнем случае так:
JavaScript
1
Array.prototype.map.call(document.querySelectorAll("#d span[id^=e]"), function(x) { return x.outerHTML })
Цитата Сообщение от FraidZZ Посмотреть сообщение
Можно использовать outerHTML, но, насколько мне известно, это не канон и не стандарт.
Да, это не стандарт... Но я бы хотел узнать, в каких именно браузерах его нет.
Вообще, в ангуляре обёртка, что если outerHTML нет, то клонируется элемент, помещается в div, а затем у этого div'а берётся innerHTML.
А регулярки вообще не могут гарантировать, что найдётся именно элемент, а не какой-то произвольный кусок скрипта или комментария.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
18.08.2014, 23:53
Цитата Сообщение от Qwertiy Посмотреть сообщение
Но я бы хотел узнать, в каких именно браузерах его нет.
Он есть только в IE и Opera. Если верить источникам в нете)

Добавлено через 32 секунды
Цитата Сообщение от Qwertiy Посмотреть сообщение
то клонируется элемент, помещается в div, а затем у этого div'а берётся innerHTML.
Да, это лучшее решение.

Добавлено через 24 секунды
Цитата Сообщение от Qwertiy Посмотреть сообщение
А регулярки вообще не могут гарантировать, что найдётся именно элемент
Поскольку HTML, насколько мне известно, нерегулярный язык.
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
18.08.2014, 23:57
Цитата Сообщение от FraidZZ Посмотреть сообщение
Он есть только в IE и Opera. Если верить источникам в нете)
В хромиумах тоже есть. В FF27 есть.

Цитата Сообщение от FraidZZ Посмотреть сообщение
Да, это лучшее решение.
Это неэффективно и должно использовться только если outerHTML действительно нет.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
18.08.2014, 23:57
Цитата Сообщение от Qwertiy Посмотреть сообщение
только если outerHTML действительно нет.
Ну естественно) Зачем изобретать заново, если и так есть?
0
 Аватар для zhibirc
651 / 236 / 77
Регистрация: 18.02.2013
Сообщений: 784
19.08.2014, 23:01
0) Использование getElementById предпочтительнее querySelector как по причине производительности (на jsperf тест показывает процентное отношение около 75%) так и по причине возможных проблем совместимости кода старыми версиями IE и Opera, что конечно, наверное, намного менее актуально;

1) Возможен и такой вариант:
Code
1
/<span[^>]*>[^<]*<\/span>/ig
Как известно, точка не совпадает с символом перевода строки, что было отмечено newJS выше. Здесь этой проблемы нет. Кроме того поиск здесь ведется имхо быстрее (теоретически, по крайней мере, хронометраж я не проводил).
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
19.08.2014, 23:09
Цитата Сообщение от zhibirc Посмотреть сообщение
Использование getElementById предпочтительнее querySelector
Там ещё параметр используется. ([id^=e])
0
0 / 0 / 1
Регистрация: 12.02.2018
Сообщений: 157
18.02.2019, 16:45
нужна регулярка Info about Leela <span xml:lang="en" lang="en"><b><span>Turanga Leela
</span></b></span><span>Super</span><span>girl</span>

вывод
<span xml:lang="en" lang="en"><b><span>Turanga Leela</span></b></span>
<span>Turanga Leela</span>
<span>Super</span>
<span>girl</span>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2019, 16:45
Помогаю со студенческими работами здесь

Регулярное выражение для замены тега. Требуется обернуть картинки в блоки.
Здравствуйте всем, Написал одно регулярное выражение для замены. replace(/\&lt;img src\=\&quot;(.*?)\&quot; border\=\&quot;0\&quot;...

Выделить цифры из строки: почему данные выводятся дважды?
&lt;input name=&quot;inp&quot; value=&quot;text 1 i text 2 pam pam 123,32 piy&quot; oninput=&quot;price(this)&quot; /&gt; function price(input) { var str =...

Регулярное выражение
Как найти в строчке все id=&quot;(вставить суда свой текст)_ss&quot; Возможно это сделать через регулярку, за раз??

Регулярное выражение
Имеется такая разметка &lt;li class=&quot;cat-item cat-item-9&quot;&gt; &lt;a href=&quot;services/proizvodstvo-naruzhnoj-reklamy/&quot;...

Регулярное выражение
var a = ; var grek = /{1}/; for(var j = 0; j&lt;grek.length; j++) { if(grek.exec(a(j)) = null) { alert('asdfg'); } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru