Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   регулярные выражения (https://javascript.ru/forum/server/11115-regulyarnye-vyrazheniya.html)

igsavenko 08.08.2010 08:21

регулярные выражения
 
Подскажите пожалуйста есть строка примерно такого вида, ну в принципе вообще не важно какая строка:
<div><span><a href='foo'>foo<a></span></div> как можно при помощи регулярных выражений получить аттрибут href. Мне нужна только ссылка. Спасибо большое.

рони 08.08.2010 10:22

можно так попробовать...
var str = "<div><span><a href='foo'>foo<a></span></div>";
var reg = /href=[\x27\x22]*([^\x27\x22\x3E\s]*)[\x27\x22]*/i;
alert(reg.exec(str)[1]);

Sweet 08.08.2010 14:31

Можно и покороче:
var str = "<div><span><a href='foo'>foo<a></span></div>";
var reg = /href='(.*)'/i;
alert(reg.exec(str)[1]);

А вообще, обычно такое через свойство .href получают

igsavenko 12.08.2010 18:16

блин.. забыл указать что на языке php :(

subzey 12.08.2010 18:42

Обязательно на регулярках? А то можно через «родной» HTML-парсер:

$document = DOMDocument();
$document->loadHTML("<div><span><a href='foo'>foo<a></span></div>");
echo $document->getElementsByTagName("a")->item(0)->attr("href");

chippolino 15.08.2010 16:48

<?php

	$str = "<div><span><a href=\"foo\">foo<a></span></div>";
	$reg = "/href=('|\").*('|\")/i";
	preg_match($reg, $str, $m);
	echo str_replace('href=','',str_replace('"','',$m[0]));
	
?>

mousesport 19.05.2013 23:01

А у меня на оборот:
<div><span><ul><li>мой пример <a href='foo'><b>нужный_текст_777</b><a></li></ul></span></div>


сделал так:
/мой пример [\s\S]*?<a[^>]*>([\s\S]*?)<\/a>/i

хотел бы получить: нужный_текст_777
но получаю только: 777

подскажите где поправить?

рони 19.05.2013 23:24

Цитата:

Сообщение от mousesport
А у меня на оборот:
<div><span><ul><li>мой пример <a href='foo'><b>нужный_текст_777</b><a></li></ul></span></div>

var str = "<div><span><ul><li>мой пример <a href='foo'><b>нужный_текст_777</b></a></li></ul></span></div>"
var reg = /мой пример [\s\S]*?<a[^>]*>([\s\S]*)<\/a>/i;
alert(reg.exec(str)[1]);

рони 19.05.2013 23:33

mousesport,
var str = "<div><span><ul><li>мой пример <a href='foo'><b>нужный_текст_777 а_далее ненужный_текст</b></a></li></ul></span></div>"
var reg = /мой пример [\s\S]*?<b[^>]*>(\S*)/i;
alert(reg.exec(str)[1]);

quirksmode 20.05.2013 04:05

/href=('|")(.*?)\$1/i

Deff 20.05.2013 07:17

var str = "<div><span><ul><li>мой пример <a href='foo'><b>нужный_текст_777 а_далее ненужный_текст</b></a></li></ul></span></div>"
var href = str.split(/(?:href=)['"]?([^'" >]+)['" >]/i)[1]
alert(href);

Aetae 20.05.2013 07:53

от понабежало извращенцев всех мастей. Правильный вариант старина subzey указал.

Deff 20.05.2013 14:42

Aetae,
:) Простые регулярки - это как концовка партии в шашки - завлекают вариантом собственного решения. (независимо от ТS вопроса)

Ксать "треугольник Петрова" лет в 7 завлёк на неделю


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