Entwickler-Ecke

Programmiersprachen (Client) - SLD+'.'+TLD mit Javascript RegExp filtern


Regan - Mi 26.01.11 16:39
Titel: SLD+'.'+TLD mit Javascript RegExp filtern
Hallo,

ich hänge mal wieder in der Luft. Ich möchte gerne aus dem location.href nur die SLD+'.'+TLD herausfiltern. Als Beispiel: aus http://www.foo.bar.blipp/lalala wird bar.blipp. So weit, so gut. Mein Javascript-Code sieht wie folgt aus:

XML-Daten
1:
curr.replace(/^http[s]?:\/\/[\w-\.]*([\w-]*\.[a-z]{2,5})[\/:]/gi, "$1");                    

Leider wirft mir das immer z. B. nur ".de" aus. Was mache ich falsch?

Vielen Dank im Voraus
Regan


Moderiert von user profile iconChristian S.: Topic aus Delphi4PHP-Technologien verschoben am So 15.07.2012 um 13:14


Martok - Mi 26.01.11 16:52

Du widersprichst dir ;)
user profile iconRegan hat folgendes geschrieben Zum zitierten Posting springen:
Ich möchte gerne aus dem location.href nur die Top-Level-Domain herausfiltern. Als Beispiel: aus http://www.foo.bar.blipp/lalala wird bar.blipp.
Das ist NICHT die TLD! Genaugenommen ist das gar nichts spezifisches, sondern lediglich SLD+'.'+TLD.

TLD wäre zum Beispiel location.host.substr(location.host.lastIndexOf('.')+1).

Dein Beispiel dazu macht nun wieder was ganz anderes... ich fürchte, das wird so nix, ohne die Termini mal klarzustellen ;)

EDIT: gut, er hats editiert ;)

Ich hätte folgendes im Angebot:

C#-Quelltext
1:
/\.([\w-]+\.[\w-]+)/gi.exec(location.host)[1]                    


Aus dem href ist das etwas schwieriger, da müsste noch ein Anker hinten und vorn dran. Brauchst du das wirklich dafür oder kannst du auch .host nehmen?


BenBE - Mi 26.01.11 17:04

Außerdem: Was machst Du bei .com.au? Oder .com.cn?

Und was willst Du bei Aufruf deines JS von einer IPv6-Adresse aus machen?


Regan - Mi 26.01.11 17:29

Sehr interessante Ideen ;)

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Ich hätte folgendes im Angebot:

C#-Quelltext
1:
/\.([\w-]+\.[\w-]+)/gi.exec(location.host)[1]                    

Das funktioniert ganz gut. Allerdings wirft das bei folgender Url-Struktur einen Fehler raus: bli.blu.ee:81. Ich habe den jetzt mal so verändert. /\.([\w-]+\.[\w-]+[:\d+]?$)/gi.exec(location.host)[1]; Allerdings wirft mir dieser Code einen Fehler?

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Brauchst du das wirklich dafür oder kannst du auch .host nehmen?

Ich kann auch das Host nehmen. Ich dachte nur, dass ich mir doppelte Eigenschaften sparen kann.

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Außerdem: Was machst Du bei .com.au? Oder .com.cn?

Die fallen nicht in mein Anwendungsgebiet. Ich habe vornehmlich Adressen mit .de oder .com

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Und was willst Du bei Aufruf deines JS von einer IPv6-Adresse aus machen?

Das läuft (erstmal) nur lokal im Netzwerk ;)


BenBE - Mi 26.01.11 17:58

user profile iconRegan hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Außerdem: Was machst Du bei .com.au? Oder .com.cn?

Die fallen nicht in mein Anwendungsgebiet. Ich habe vornehmlich Adressen mit .de oder .com

Es gibt Listen mit TLDs (und auch den STLDs, die man durchaus beachten sollte. Weil ich denk mal, du willst da sicherlich vernünftige Ergebnisse bei rausbekommen. Und .com.au und com.cn sind nur zwei Beispiele einer RECHT langen Liste. Gibt sogar einige, die sind sowohl mit als auch ohne Second Level TLD verwendbar ;-)

user profile iconRegan hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Und was willst Du bei Aufruf deines JS von einer IPv6-Adresse aus machen?

Das läuft (erstmal) nur lokal im Netzwerk ;)

Was mindestens Windows XP laufen hat und daher "IPv6-enabled" ist ;-)


Regan - Fr 28.01.11 22:50

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Gibt sogar einige, die sind sowohl mit als auch ohne Second Level TLD verwendbar ;-)

Wie gesagt: Betrifft mich nicht.

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Was mindestens Windows XP laufen hat und daher "IPv6-enabled" ist ;-)

Mein Router hier kann nicht mal WPA :P

Ich habe das nochmal überarbeite und in zwei schicke Funktionen gefasst. Die erste ist für Hosts und die zweite für URLs:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
function getDomain(aHost) {
  if (aHost.search(/:\d+$/gi) != -1) {
    aHost = /(.+):\d+$/gi.exec(aHost)[1];
  }
  return /\.?([\w-]+\.[\w-]+?$)/gi.exec(aHost)[1];
}

function getHost(aUrl) {
  if (aUrl.search(/^[^http:\/\/]/i) != -1) {
    return curr;
  }
  if (aUrl.search(/:\d+/gi) != -1) {
    return /\.?([\w-]+\.[\w-]+?):\d+\//gi.exec(aUrl)[1];
  }
  return /\.?([\w-]+\.[\w-]+?)\//gi.exec(aUrl)[1];
}


jaenicke - Sa 29.01.11 12:27

user profile iconRegan hat folgendes geschrieben Zum zitierten Posting springen:
Mein Router hier kann nicht mal WPA :P
Sowas benutzt du noch? Hast du auch schön viele Netzwerkfreigaben? :mrgreen:


Regan - Sa 29.01.11 12:30

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconRegan hat folgendes geschrieben Zum zitierten Posting springen:
Mein Router hier kann nicht mal WPA :P
Sowas benutzt du noch? Hast du auch schön viele Netzwerkfreigaben? :mrgreen:

Ja, alle Ports sind geöffnet.