2013-07-02 7 views
-2

Я хочу, чтобы получить имя домена без WWWRegex найти доменное имя без WWW

например: https://www.gmail.com/anything Вывод должен быть gmail.com (или .net или .org)

Может кто-нибудь помочь мне в давая регулярное выражение для этого?

+0

Вы пробовали что-нибудь еще? – j08691

+1

Что вы попробовали? SO не является генератором кода. –

+0

Я попытался, и мое регулярное выражение (? <= \. |) \ W + \. \ W + $ работает в рубине не в coffescript –

ответ

4

Использование регулярных выражений, таких как /(?:https?:\/\/)?(?:www\.)?(.*?)\//:

var str = "https://www.gmail.com/anything"; 
var match = str.match(/(?:https?:\/\/)?(?:www\.)?(.*?)\//); 
console.log(match[match.length-1]); //gmail.com (last group of the match) 

Примечание: Это позволит получить все после того, как протокол HTTP/HTTPS, не включая WWW - до первой косой черты.

Дополнительное примечание: Много доменов используют поддоменов - значит mail.google.com внезапно стал google.com и, следовательно, не работают. Шахта включает в себя все поддомены от от www.

+0

спасибо и его работа, и проблема в том, что я могу или не могу получить https ex: я могу получите также www.gmail.com. Итак, как я могу изменить это на работу? –

+0

@kittuss Использование вопросительных знаков. 'https?: \/\ /' означает «строка' http', за которой следует необязательный 's', за которым следует': // '. Следовательно, '(https?: \/\ /)?' Означает предыдущий, но знак вопроса означает «повторяется 1 или 0 раз» (так что это необязательно). Проверьте мой обновленный ответ на рабочий код. Когда скобка начинается с '?:', Это не захватывающая группа, что означает «не помещайте это соответствие в наши результаты совпадения». – h2ooooooo

+0

Спасибо, много .. Это работает как шарм !! –

3

Вы можете использовать <a>, чтобы получить информацию о URL-адресе. Например:

var a = document.createElement("a"); 
a.href = "http://www.google.com"; 

Вы можете получить домен:

var domain = a.hostname; 

И вы можете стирают любые ведущие "WWW.":

domain = domain.replace(/^www\./, ""); 

В многоразовой функции, вы могли бы использование:

function getDomain(url) { 
    var a, domain; 

    a = document.createElement("a"); 
    a.href = url; 

    domain = a.hostname; 
    domain = domain.replace(/^www\./, ""); 

    return domain; 
} 

DEMO:http://jsfiddle.net/DuK6D/


More info/attributes about the HTMLAnchorElement JS object on MDN

+1

Любил это. Очень простой, эффективный и надежный – mvinayakam

Смежные вопросы