Wie man domain-Namen nur mit javascript?
Möchte ich, um domain-Namen nur mit javascript. Ex
vn.search.yahoo.com -> yahoo
vn.search.yahoo.com.vn -> yahoo
sub1.sub2.sub3.abcdef.co.uk -> abcdef
Danke!
Edit: "Domain" (Domäne = domain ohne Endung (ex: .com .net .co.uk...) und ohne sub-domain (z.B. www, E-Mail, CAD, support...)
- Wird diese arbeiten müssen auf allen domains? Und wenn nicht, welche Art von domains sind Sie mit der Zusammenarbeit? (
subd.subd.domain.com
,domain.com
,http://domain.com
usw.) - Was ist Ihre definition von "domain"?
- Dies tut es für Sie tun? jsfiddle.net/purmou/TzjJE
- Ist Ihr Skript ausführen innerhalb dieser Domäne? Wenn ja, hätte ich vielleicht eine einfachere Methode
- OP sollte die Reaktion auf Anfragen zur Klärung,...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
location.host
abgeschnitten und subdomains und das TLD:update: wie @demix wies darauf hin, dieser schlägt fehl, für 2-und 3-Buchstaben-domains. Es werden auch nicht für domains wie
aero
,jobs
und Dutzende andere.Der einzige Weg, um zu wissen, gültige TLDs im Voraus, so dass hier eine geeignete Funktion:
Ich hoffe, dass ich nicht verpassen zu viele Ecke Fälle. Dies sollte in den
location
Objekt 🙁Testfälle: http://jsfiddle.net/hqBKd/4/
Einer Liste von TLDs finden Sie hier: http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1
www.epa.qld.gov.au
gibt "Queensland" wenn "epa" erwartet werden könnte.www.edu.com
gibt "www" wo "edu" erwartet werden könnte. Die OP ist noch zu erklären, was eine "Domäne" ist.qld
ist nicht Teil einer top-level-domain. Festewww.edu.com
. Ich weiß nicht, von jemand, der eine volle Liste der Land-code der second-level-domains..xxx.uk
,xxx.co.uk
sind beide gültig, und in beidenxxx
ist der "domain name". Auf der anderen Seiteco.uk
ist keine gültige Adresse ein, währendbe.at
sein könnte. Es gibt keine Möglichkeit, diese Unterschiede auf andere als die Suche in der Liste der registrierten TLDs und SLDs.location.host
die port-Nummer ist auch vorhanden und (wenn angegeben) im Gegensatz zuwindow.location.hostname
finden Sie unter diesem Verweis: bl.ocks.org/abernier/3070589Ich war auf der Suche nach etwas, das würde für die Mehrheit der Fälle, ohne dass die TLD-Liste (und überspringen, es ist eine Größe!). Es scheint mir, dass Sie können dies tun, ziemlich genau, indem wir statt auf der Second-Level-Domain für die gebräuchlichsten:
Fiddle & Tests @ http://jsfiddle.net/mZPaf/2/
Kritiken/Gedanken willkommen.
www.gov.com
,www.edu.com
und ähnliche Domänen, die alle scheitern.Die einzige Möglichkeit die ich mir vorstellen kann ist eine Liste aller TLD. Beispiel-code wie unten.
Array.der Prototyp.indexOf tun sollte fix im IE.
Zimmerreserviereung, ohne das Sie eine vollständige Liste der TLD ' s (das wäre sehr lang). Wenn Sie nur den domain-Namen von der aktuellen Seite, die Sie verwenden können, meine Technik (mit cookies zu finden, die root-domain)
Javascript - Get Domainnamen Ohne Subdomain
Entfernen Sie die Erweiterung, die Sie dann verwenden können, um das erste element aus einer
str.split('.')[0]
ich musste das tun, und peitschte etwas einfacher, das machten meine
hauptsächlich wollte ich nur entfernen Sie alle subdomains, leider ist das nicht 100% für einige der neuen TLD ' s, aber es funktioniert ziemlich gut, und Sie können immer hinzufügen, um die regex.
http://jsfiddle.net/icodeforlove/TzjJE/2/
Mit Hilfe von anderen Freundes-code-Beispiele, die oben gegeben ich erstellte eine Funktion, die wieder nur domain-Namen, und wenn es nicht gültig ist Domäne, zum Beispiel die TLD fehlt, dann wird es befestigen ".com" nach meiner Anforderung.
Es ist ganz einfach:
subdomain.domain.com
: jsfiddle.net/purmou/Pgarwwww.epa.qld.gov.au
oder kurzestackoverflow.com
oder irgendetwas dazwischen. Was bezeichnest du als "domain" hier?www.epa.qld.gov.au
?Was ist das?
RegEx, die ich verwendet, um domain-Namen nur:
([^.]*[.]){0,}([^.]*)(\.[^.]*)
Die domain können Sie im zweiten Teil.
www.example.co.uk
. Der zweite Teil istco