2012-03-24 11 views
1

Ok, so bin ich die Ausführung der folgende Zeile Code in JavascriptWie mit Extrakt url von tweet mit regulären Ausdrücken

RegExp('(http:\/\/t.co\/)[a-zA-Z0-9\-\.]{8}').exec(tcont); 

wo TCont bis zu einem gewissen String wie ‚Test tweet http://t.co/GXmaUyNL‘ gleich sind (der Inhalt eines Tweets von jquery).

Es kommt jedoch zurück, im obigen Beispiel zum Beispiel 'http://t.co/GXmaUyNL,http://t.co/'.

Das ist frustrierend, weil ich die URL ohne das Bit am Ende wollen - nach und einschließlich des Kommas.

Irgendwelche Ideen, warum dies erscheint? Dank

+0

möglich Duplikat [regex URL in einem Text zu finden] (http://stackoverflow.com/questions/5461702/regex-to-find-url-in-a-text) –

Antwort

2

Zuerst des Pars im Muster loswerden - sie sind nicht notwendig:

RegExp('http:\/\/t.co\/[a-zA-Z0-9\-\.]{8}').exec(tcont); 

Zweitens, eine Regex eine Reihe von passenden Gruppen gibt - Sie in dem ersten Punkt wollen (die gesamte Spiel):

var match = RegExp('http:\/\/t.co\/[a-zA-Z0-9\-\.]{8}').exec(tcont); 
if(match) { 
    var result = match[0]; 
} 

der Grund, warum Sie „ein Teil am Ende“ hatte, weil Ihr Ergebnis ist tatsächlich ein Array - die Pars Sie im Ausdruck hatten, wurden in einer zusätzlichen Anpassungs Gruppe resultierende (den Teil sie waren um), die w wäre match[1].

+0

Hervorragend, das hat so gut funktioniert - ich bin nicht so erfahren mit Regex, das hilft wirklich. – neutrino

+1

Ich denke, die '.' sollte entkommen. – pimvdb

+0

Möglicherweise? scheint mit oder ohne Flucht gleichermaßen gut zu funktionieren – neutrino

0

Versuchen Sie folgendes: RegExp('http:\/\/t\.co\/[a-zA-Z0-9\-\.]{8}').exec(tcont);

Verwandte Themen