Регулярка, удалить www из адреса
Из веб-адресов нужно удалить www которые иногда идут впереди, при этом не сломать сам адрес, тоесть:
www.site.com -> site.com www.sitewww.com -> sitewww.com www.ru - > www.ru org.ua -> org.ua у меня не выходит. |
/www\.(?=\w+(\.\w+)+$)/
и далее изменять или увеличивать сложность по мере необходимости учета всех возможных вариантов. |
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")); Если же вам (вероятнее всего :D) нужна замена в строке всех ссылок, то как-то так: 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)); Мой вариант не идеален, но что-то он может... |
А это уже на катит?
var url = window.location; url.host + url.pathname; |
monolithed, мм... А причём тут это?
|
Цитата:
|
monolithed,
Как твое предложение в целом, вне зависимости от источника строки, помогает в решении проблемы - удалить ведущий префикс в www.example.com, но оставить в www.ru? |
Цитата:
|
Сразу не заметил 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 |
Цитата:
Теперь, пожалуйста, помогите распарсить 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, сплошные если:
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 ответ\ </title>\ \ <!-- И дальше конец страницы -->'; var re = /<title>[\S\s]*?(\d+)[\S\s]*?<\/title>/im; alert( re.exec( page )[ 1 ] ); Но, если имеется перевод строк, проще найти <title>, затем бить по ним и искать от конца к началу (если в строе имеются еще числа). |
var e='<title>(url:[url]www.rambler.ru/*[/url] | url:rambler.ru /* | url:rambler.ru | url:[url]www.rambler.ru[/url]) -Яндекс:нашёлся 1231 ответ</title>'; var reg_exp=/<title>(?:.*)\s(\d+)(?:.*)<\/title>/im; var match=e.match(reg_exp); if(match){alert(match[1]);}else{alert('нету');} |
Цитата:
|
Цитата:
<!-- Здесь начало страницы--> <title> (url:www.12244rambler.ru/* | url:ra335435mbler.ru /* | url:666.ru | url:www.rambler788.ru) - Яндекс: нашёлся 1231 ответ </title> <!-- И дальше конец страницы --> |
Цитата:
|
var page = '<!-- Здесь начало страницы-->\ \ <title>\ (url:[url]www.12244rambler.ru/*[/url] | url:ra335435mbler.ru /* | url:666.ru | url:[url]www.rambler788.ru[/url]) -\ Яндекс:\ нашёлся 1231 ответ\ </title>\ \ <!-- И дальше конец страницы -->'; var temp = /<title>[\S\s]+?<\/title>/im.exec( page )[ 0 ]; alert( /\d+(?=\D+$)/.exec( temp )[ 0 ] ); Maxmaxmахimus, хватит обманывать человека) Никакого секрета нет. Главное логику понять :) Я уже говорил и повторюсь: 1. Регулярные выражения - прочитать и добавить в закладки. Как только потребуется шаблон составить, открываете и смотрите по таблице. 2. Особенности регулярных выражений в Javascript - прочитать и попытаться понять. 3. После первых двух пунктов уже можно что-то делать. Для полного понимания происходящего Дж.Фридл - Регулярные выражения первые 6-ть глав. |
регулярки хороши универсальностью, но плохи ясностью a в этом случае еще и скоростью работы. думаю, такой вариант меня бы устроил:
function strip_www(dom) { if (dom.substr(0,4)=='www.') return dom.substr(4,dom.length); else return dom; } |
Цитата:
<title> (url:www.rambler.ru/* | url:rambler.ru /* | url:rambler.ru | url:www.rambler.ru) - Яндекс: нашёлся 1231 ответ </title> <script> var a = document.getElementsByTagName('title')[0].innerHTML a = a.match(/(\d+)/)[0] alert(a) </script> |
Часовой пояс GMT +3, время: 19:01. |