Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярка, удалить www из адреса (https://javascript.ru/forum/misc/26905-regulyarka-udalit-www-iz-adresa.html)

nerv_ 27.03.2012 17:25

Magneto, сплошные если:
1. если я Вас правильно понял
2. если кроме этого числа в данной строке чисел нет
3. если оно целое
var page = '<!-- Здесь начало страницы-->\
			\
			<title>\
			(url:[url]www.rambler.ru/*[/url] | url:rambler.ru /* | url:rambler.ru | url:[url]www.rambler.ru[/url]) -\
			Яндекс:\
			нашёлся 1231&nbsp;ответ\
			</title>\
			\
			<!-- И дальше конец страницы -->';

var re = /<title>[\S\s]*?(\d+)[\S\s]*?<\/title>/im;

alert( re.exec( page )[ 1 ] );

Но, если имеется перевод строк, проще найти <title>, затем бить по ним и искать от конца к началу (если в строе имеются еще числа).

Rootpassword 27.03.2012 17:27

var e='<title>(url:[url]www.rambler.ru/*[/url] | url:rambler.ru /* | url:rambler.ru | url:[url]www.rambler.ru[/url]) -Яндекс:нашёлся 1231&nbsp;ответ</title>';
var reg_exp=/<title>(?:.*)\s(\d+)(?:.*)<\/title>/im;
var match=e.match(reg_exp);
if(match){alert(match[1]);}else{alert('нету');}

Magneto 27.03.2012 17:52

Цитата:

Сообщение от Maxmaxmахimus
вдруг чисел будет много а тебе нужно именно то, что после "нашелся"

Но если там будет число 1345, то предложение будет иметь следующий вид: Яндекс:нашлось 1345&nbsp;ответов

Magneto 27.03.2012 17:53

Цитата:

Сообщение от nerv_
Magneto, сплошные если:
1. если я Вас правильно понял
2. если кроме этого числа в данной строке чисел нет
3. если оно целое

Это всегда целое число, и числа могут попадаться в круглых скобках в которых перечисленны сайты. тоесть типа:
<!-- Здесь начало страницы-->

<title>
(url:www.12244rambler.ru/* | url:ra335435mbler.ru /* | url:666.ru | url:www.rambler788.ru) -
Яндекс:
нашёлся 1231&nbsp;ответ
</title>

<!-- И дальше конец страницы -->

Magneto 27.03.2012 18:17

Цитата:

Сообщение от Maxmaxmахimus
выучи уже регулярки, у меня 4 часа на это ушло могу рассказать секрет

Так говори, так сказать: По секрету всему свету.

nerv_ 27.03.2012 18:51

var page = '<!-- Здесь начало страницы-->\
			\
			<title>\
			(url:[url]www.12244rambler.ru/*[/url] | url:ra335435mbler.ru /* | url:666.ru | url:[url]www.rambler788.ru[/url]) -\
			Яндекс:\
			нашёлся 1231&nbsp;ответ\
			</title>\
			\
			<!-- И дальше конец страницы -->';

var temp = /<title>[\S\s]+?<\/title>/im.exec( page )[ 0 ];

alert( /\d+(?=\D+$)/.exec( temp )[ 0 ] );

Maxmaxmахimus, хватит обманывать человека) Никакого секрета нет. Главное логику понять :)

Я уже говорил и повторюсь:
1. Регулярные выражения - прочитать и добавить в закладки. Как только потребуется шаблон составить, открываете и смотрите по таблице.
2. Особенности регулярных выражений в Javascript - прочитать и попытаться понять.
3. После первых двух пунктов уже можно что-то делать. Для полного понимания происходящего Дж.Фридл - Регулярные выражения первые 6-ть глав.

x15nicky 27.03.2012 20:26

регулярки хороши универсальностью, но плохи ясностью a в этом случае еще и скоростью работы. думаю, такой вариант меня бы устроил:
function strip_www(dom)
{
  if (dom.substr(0,4)=='www.')
    return dom.substr(4,dom.length);
  else
  return dom;
}

9xakep 27.03.2012 20:37

Цитата:

Сообщение от Magneto (Сообщение 165206)
Я получаю адрес как строку.

Теперь, пожалуйста, помогите распарсить html-страницу.
Имеется обычная html-страница, я ее получаю через ajax. В этой странице между тегами <title></title> находится нужное мне число, нужно вытащить это число. Пример страницы:
<!-- Здесь начало страницы-->

<title>
(url:www.rambler.ru/* | url:rambler.ru /* | url:rambler.ru | url:www.rambler.ru) -
Яндекс:
нашёлся 1231&nbsp;ответ
</title>

<!-- И дальше конец страницы -->


Нужное число в данном примере 1231, число может быть от 0 и до бесконечности.

Если в этой строке будут только одно число, то не легче:
<title>
(url:www.rambler.ru/* | url:rambler.ru /* | url:rambler.ru | url:www.rambler.ru) -
Яндекс:
нашёлся 1231&nbsp;ответ
</title>
<script>
var a = document.getElementsByTagName('title')[0].innerHTML
a = a.match(/(\d+)/)[0]
alert(a)
</script>


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