Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   регулярное выражения поиска html-тега (https://javascript.ru/forum/dom-window/64583-regulyarnoe-vyrazheniya-poiska-html-tega.html)

gazman 23.08.2016 09:40

регулярное выражения поиска html-тега
 
здравствуйте
практикуюсь в регулярных выражениях. не получается в тексте найти html-тег. помогите, пожалуйста

var str = "Сайт рыбатекст поможет дизайнеру, верстальщику, 'вебмастеру сгенерировать the sun несколько абзацев более менее осмысленного' текста рыбы на русском языке, а начинающему оратору отточить навык публичных выступлений в домашних условиях. +7(903)-123-45-67 При создании генератора мы использовали небезызвестный универсальный код речей. Текст генерируется абзацами случайным образом от двух до десяти предложений в абзаце, что позволяет сделать текст более +7(912)-124-42-68 привлекательным и живым для визуально-слухового восприятия. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 'Aenean commodo ligula eget dolor. Aenean massa'. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, <style> justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.";

var reg = /<style>/g;

document.write(str.match(reg));


не выводится результат на экран.

Manyasha 23.08.2016 10:43

gazman,
match возвращает массив, на сколько я знаю:
var str = "Сайт рыбатекст поможет дизайнеру, верстальщику, 'вебмастеру сгенерировать the sun несколько абзацев более менее осмысленного' текста рыбы на русском языке, а начинающему оратору отточить навык публичных выступлений в домашних условиях. +7(903)-123-45-67 При создании генератора мы использовали небезызвестный универсальный код речей. Текст генерируется абзацами случайным образом от двух до десяти предложений в абзаце, что позволяет сделать текст более +7(912)-124-42-68 привлекательным и живым для визуально-слухового восприятия. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 'Aenean commodo ligula eget dolor. Aenean massa'. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, <style> justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.";
var reg = /<style>/g;
alert(str.match(reg)[0]);

ksa 23.08.2016 10:45

Цитата:

Сообщение от gazman
не выводится результат на экран

А что должно быть на экране?

gazman 23.08.2016 14:52

выводиться должно <style>
с помощью массива также не выводится.
другие правила выводит значения (например var reg = /\d/g), но когда пишу треугольные скобки, то ни чего не отображает

ksa 23.08.2016 15:26

Цитата:

Сообщение от gazman
выводиться должно <style>

Т.е. тебе нужно посмотреть какие теги есть в тексте?
Тогда, как вариант...

var str = "Сайт рыбатекст поможет дизайнеру, <b>верстальщику</b>, 'вебмастеру сгенерировать the sun <span>несколько</span> абзацев более менее осмысленного' текста рыбы на русском языке, а начинающему оратору отточить навык публичных выступлений в домашних условиях. +7(903)-123-45-67 При создании генератора мы использовали небезызвестный универсальный код речей. Текст генерируется абзацами случайным образом от двух до десяти предложений в абзаце, что позволяет сделать текст более +7(912)-124-42-68 привлекательным и живым для визуально-слухового восприятия. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 'Aenean commodo ligula eget dolor. Aenean massa'. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, <style> justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.";
var reg = /<[^\/]+?>/gm;
alert(str.match(reg));

gazman 23.08.2016 16:22

спасибо. всё хорошо
почему-то через document.write не выводит, а через alert всё хорошо

ksa 23.08.2016 16:54

Цитата:

Сообщение от gazman
почему-то через document.write не выводит, а через alert всё хорошо

Потому как alert может преобразовывать массивы а document.write - нет.

Manyasha 23.08.2016 16:59

Цитата:

Сообщение от gazman (Сообщение 426421)
через document.write не выводит

Нажмите ctrl+u:p
хоть и не понимаю, зачем Вас с document.write, но вот так можно:
<script type="text/javascript">
var str = "Сайт рыбатекст поможет дизайнеру, <b>верстальщику</b>, 'вебмастеру сгенерировать the sun <span>несколько</span> абзацев более менее осмысленного' текста рыбы на русском языке, а начинающему оратору отточить навык публичных выступлений в домашних условиях. +7(903)-123-45-67 При создании генератора мы использовали небезызвестный универсальный код речей. Текст генерируется абзацами случайным образом от двух до десяти предложений в абзаце, что позволяет сделать текст более +7(912)-124-42-68 привлекательным и живым для визуально-слухового восприятия. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 'Aenean commodo ligula eget dolor. Aenean massa'. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, <style> justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.";
var reg = /<[^\/]+?>/gm;
document.write(str.match(reg).join(", ").replace(/</g, "&lt;").replace(/>/g, "&gt;"));
 </script>

рони 23.08.2016 18:31

Manyasha,
а без document.write и replace?

gazman 23.08.2016 21:40

я просто проверяю результат через document.write
мне больше нравится чем алерт

ksa 24.08.2016 08:16

Цитата:

Сообщение от gazman
я просто проверяю результат через document.write
мне больше нравится чем алерт

Меняй привычку... :D

gazman 24.08.2016 09:08

понял))

Manyasha 24.08.2016 11:05

Цитата:

Сообщение от рони (Сообщение 426432)
а без document.write и replace?

ну... можно в какой-нибудь элемент запихнуть, или через console.log.
На саму страницу вывести без replace только в тег xmp получилось:
<xmp id = "tags"></xmp>
<script type="text/javascript">
var str = "Сайт рыбатекст поможет дизайнеру, <b>верстальщику</b>, 'вебмастеру сгенерировать the sun <span>несколько</span> абзацев более менее осмысленного' текста рыбы на русском языке, а начинающему оратору отточить навык публичных выступлений в домашних условиях. +7(903)-123-45-67 При создании генератора мы использовали небезызвестный универсальный код речей. Текст генерируется абзацами случайным образом от двух до десяти предложений в абзаце, что позволяет сделать текст более +7(912)-124-42-68 привлекательным и живым для визуально-слухового восприятия. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 'Aenean commodo ligula eget dolor. Aenean massa'. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, <style> justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.";
var reg = /<[^\/]+?>/gm;
var el = document.getElementById("tags");
el.innerHTML = str.match(reg);
console.log(str.match(reg));
</script>

Но ведь Вы не просто так задали вопрос, есть еще какие-то интересные варианты?))

рони 24.08.2016 11:15

Manyasha,
задача получить тотже результат(html) что в вашем посте 8, но но без document.write и replace. в учебнике всё для этого есть.
Добавление и удаление узлов

scrollquest 24.08.2016 11:18

рони,
replace всяко лучше. DOM добавляет тормозов, по-возможности его лучше не дергать

рони 24.08.2016 11:36

scrollquest,
причём тут replace и тормоза, речь идёт о том чтобы нигде и никогда не использовать document.write новичкам, потом можно, но уже ненужно.

scrollquest 24.08.2016 11:46

рони,
Цитата:

Сообщение от рони
никогда не использовать document.write новичкам

бред. Новичкам нужно учится, а не собирать штампы по интернету. Тормоза тут притом, что не надо писать тормозные приложения, не надо учить новичков писать тормозное говно, потому что привычки эти укореняются, и потом редко когда меняются.

рони 24.08.2016 11:50

scrollquest,
Цитата:

Сообщение от scrollquest
replace всяко лучше. DOM добавляет тормозов, по-возможности его лучше не дергать

это бред!!! а ниже ваш пост, демагогия. у вас штампы в голове. replace и есть тормоз, а document.write беда для новичка, потому как потом ищут куда страница исчезает.

scrollquest 24.08.2016 11:51

рони,
я давно подозревал, что Вы нулевой, сейчас окончательно убедился. Раньше я думал, что Вы только в ООП плаваете.

рони 24.08.2016 12:00

scrollquest,
не засоряйте темы, плохими советами и конями в вакууме.

рони 24.08.2016 12:13

scrollquest,
<script>
var d = performance.now();
for (var i=0; i<1000; i++)  {document.write("scrollquest".replace(/.*/,"$& конь в вакууме " ))}
alert(performance.now()-d);
d = performance.now();
for (var i=0; i<1000; i++)  {document.body.appendChild(document.createTextNode("scrollquest конь в вакууме "))}
alert(performance.now()-d);
</script>

scrollquest 24.08.2016 12:14

рони,
это случайно не ваш сенсей написал?

Цитата:

The benefits and uses

In most cases, it is preferred to use DOM for modifications, because it is convenient, and there is innerHTML, which is almost the same.

But document.write is the fastest way to add a script-generated text into the page.

Also, it is used to insert advertising scripts and counters:
1
<script>
2
var url = 'http://ads.com/buyme?rand='+Math.random()
3
document.write('<script src="'+url+'"></scr'+'ipt>')
4
</script>
A script URL is generated dynamically, to allow user-specific data may be added to the URL, like screen resolution and other stuff available from JS.
Adding a random value prevents caching even for a force-caching proxy.
Note that the closing </SCRIPT> is split. Otherwise browser would think that the script finishes right at that </SCRIPT>.
That's convenient, but a bad way, because loading a script may block the rest of page from rendering. Especially, a problem when the ads server is slow.

Think thrice before inserting a third-party script into HTML.

There is a better way which doesn't block the page. Use the DOM, create SCRIPT element and append it to HEAD.

1
var script = document.createElement('script')
2
script.src = 'http://ads.com/buyme?rand='+Math.random()
3

4
// now append the script into HEAD, it will fetched and executed
5
document.documentElement.firstChild.appendChild(sc ript)
Using DOM doesn’t block the page and makes the page faster and safe from third-party lags.
http://javascript.info/tutorial/document-write
Он видать, чуток поумнел, вышел из состояния 100%-ного имбицила. Но на вас, русскоязычных адептов он положил болт, там платят больше центов

Manyasha 24.08.2016 12:15

Цитата:

Сообщение от рони (Сообщение 426462)
в учебнике всё для этого есть.
Добавление и удаление узлов

прочитала, тогда так:
var str = "Сайт рыбатекст поможет дизайнеру, <b>верстальщику</b>, 'вебмастеру сгенерировать the sun <span>несколько</span> абзацев более менее осмысленного' текста рыбы на русском языке, а начинающему оратору отточить навык публичных выступлений в домашних условиях. +7(903)-123-45-67 При создании генератора мы использовали небезызвестный универсальный код речей. Текст генерируется абзацами случайным образом от двух до десяти предложений в абзаце, что позволяет сделать текст более +7(912)-124-42-68 привлекательным и живым для визуально-слухового восприятия. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 'Aenean commodo ligula eget dolor. Aenean massa'. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, <style> justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.";
var reg = /<[^\/]+?>/gm;
document.body.appendChild(document.createTextNode(str.match(reg)));

Цитата:

Сообщение от рони (Сообщение 426469)
document.write беда для новичка

так я и была против такого способа, поэтому переделала через alert в своем первом ответе.

До createTextNode без Вашей ссылки не догадалась бы, спасибо за урок!:thanks:

ой, меня уже опередили с примером...

scrollquest 24.08.2016 12:16

рони,
ну я ж говорил, что Вы нулевой. Вы еще и пруфец подкинули. Лан, надоела мне эта бредятина. Программист, который даже не понимает что он тестит, LOL. Думайте что хотите.

рони 24.08.2016 12:19

scrollquest,
смотрите пост 21 строка 6, если бы написали эту строку, а не кучу текста, ещё можно было поверить что вы что-то умеите сами и внимательны к собеседникам.

рони 24.08.2016 12:19

Manyasha,
:victory: :dance:

scrollquest 24.08.2016 12:22

рони,
мне нехрена смотреть, я вижу Ваши рассуждения, на уровне детского лепета, мне этого достаточно. А на собеседников мне вообще насрать, я не нанимался детей воспитывать


Часовой пояс GMT +3, время: 22:17.