27.03.2012, 03:15
|
|
Люмус, Емаксос Developer!
|
|
Регистрация: 06.05.2010
Сообщений: 677
|
|
Регулярка, удалить www из адреса
Из веб-адресов нужно удалить www которые иногда идут впереди, при этом не сломать сам адрес, тоесть:
www.site.com -> site.com
www.sitewww.com -> sitewww.com
www.ru - > www.ru
org.ua -> org.ua
у меня не выходит.
|
|
27.03.2012, 04:10
|
Профессор
|
|
Регистрация: 14.12.2009
Сообщений: 155
|
|
/www\.(?=\w+(\.\w+)+$)/
и далее изменять или увеличивать сложность по мере необходимости учета всех возможных вариантов.
|
|
27.03.2012, 08:44
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Magneto, рискну предложить свой вариант (хоть и не ручаюсь за него после бессонной ночи). По сути, www идёт либо в самом начале (если протокол не указан), либо после двух слешей. Чтобы не сломать адрес, который идёт потом, надо задуматься о количестве точек до пути на сервере (от которого host-имя отделено слешем). Если там только одна точка, то www - это название сайта, если больше - это ненужный нам архаизм.
function replace_www(str) {
return str.replace(/(?:((?:\/\/)|^)www\.)(?=[^/]*?\.)/i, "$1");
}
alert(replace_www("www.site.com"));
alert(replace_www("www.sitewww.com"))
alert(replace_www("www.ru"));
alert(replace_www("http://yandex.ru"));
Если же вам (вероятнее всего ) нужна замена в строке всех ссылок, то как-то так:
function replace_www(str) {
return str.replace(/(?:((?:(?:\/\/)|^)|\s)www\.)(?=[^/\s$]*?\.)/gi, "$1");
};
str= "www.org.ua, www.ru, www.ru/savva.ss, www.sitewww.ru, http://www.yandex.ru";
alert(replace_www(str));
Мой вариант не идеален, но что-то он может...
Последний раз редактировалось trikadin, 27.03.2012 в 08:53.
|
|
27.03.2012, 11:03
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
А это уже на катит?
var url = window.location;
url.host + url.pathname;
Последний раз редактировалось monolithed, 27.03.2012 в 11:05.
|
|
27.03.2012, 11:05
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
monolithed, мм... А причём тут это?
|
|
27.03.2012, 13:25
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от trikadin
|
мм... А причём тут это?
|
Ну как, если Magneto получает адрес из Location, то это самый верный вариант, если же строку, то тогда мимо.
|
|
27.03.2012, 14:07
|
Профессор
|
|
Регистрация: 14.12.2009
Сообщений: 155
|
|
monolithed,
Как твое предложение в целом, вне зависимости от источника строки, помогает в решении проблемы - удалить ведущий префикс в www.example.com, но оставить в www.ru?
|
|
27.03.2012, 15:15
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от monolithed
|
Ну как, если Magneto получает адрес из Location, то это самый верный вариант, если же строку, то тогда мимо.
|
Да, я понимаю. Просто ему, судя по посту, нужно удалять это из многих разных ссылок... Поэтому регулярки.
|
|
27.03.2012, 15:56
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сразу не заметил www.ru
var re = /^w{3}\.(?=[^.]+\.)/;
alert( 'www.site.com'.replace( re, '' ) ); // site.com
alert( 'www.sitewww.com'.replace( re, '' ) ); // sitewww.com
alert( 'www.ru'.replace( re, '' ) ); // [url]www.ru[/url]
alert( 'org.ua'.replace( re, '' ) ); // org.ua
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 27.03.2012 в 16:08.
|
|
27.03.2012, 16:52
|
|
Люмус, Емаксос Developer!
|
|
Регистрация: 06.05.2010
Сообщений: 677
|
|
Сообщение от monolithed
|
Ну как, если Magneto получает адрес из Location, то это самый верный вариант, если же строку, то тогда мимо.
|
Я получаю адрес как строку.
Теперь, пожалуйста, помогите распарсить html-страницу.
Имеется обычная html-страница, я ее получаю через ajax. В этой странице между тегами <title></title> находится нужное мне число, нужно вытащить это число. Пример страницы:
<!-- Здесь начало страницы-->
<title>
(url:www.rambler.ru/* | url:rambler.ru /* | url:rambler.ru | url:www.rambler.ru) -
Яндекс:
нашёлся 1231 ответ
</title>
<!-- И дальше конец страницы -->
Нужное число в данном примере 1231, число может быть от 0 и до бесконечности.
Последний раз редактировалось Magneto, 27.03.2012 в 17:01.
|
|
|
|