2016-07-12 17 views
0

Ich habe URL-Adressen wieWie Javascript Spiel genau 7 Zahlen aus verschiedenen Urls

mein Javascript Bookmarklet so etwas wie unten aussieht .

javascript:(function(){javascript:var location_pathname = document.location.href;var ggId = location_pathname.match(/^[0-9]{7}$/)[1]; window.open('http://localhost/script.php?id='+ggId, '_blank')})() 

Wie diese 7 Zahlen von jedem URLs übereinstimmen? Oben ist mein Skript, aber es funktioniert nicht. Wenn ich zum Beispiel mit "/\/something\/(.*)/" Code übereinstimmt, funktioniert und öffnet neue Registerkarte http://localhost/script.php?id=9303033, aber es funktioniert nur in einigen Fällen.

Antwort

1

Wenn es genau 7 Stellen nach Slash (/) und einem anderen Schrägstrich oder EOL dann richtig RegEx ist

var re = /\/(\d{7})\/?|$/; //note (\d{7}) This is what will be captured 
//tests 
'http://www.gg.omg/whatever/4303013'.match(re)[1]; //4303013 
'http://www.gg.omg/whatever/4303013/maybe'.match(re)[1]; //4303013 
'http://www.gg.omg/whatever/430301'.match(re)[1]; //undefined 
+0

Das hat den Trick! Vielen Dank, jetzt kann ich gut schlafen. – sukkis

0

Entfernen Sie die^am Anfang der Regex und die $ am Ende, um an beliebigen Stellen der URL übereinstimmen.

location_pathname.match(/([0-9]{7})/)[1]; 
+0

ich es schon versucht, aber dann Browser öffnet dies: S http: // localhost /script.php?id=undefined – sukkis

+0

@sukkis und das? Standort_Pfadname.match (/ \ d {7} /) [1]; – MoustafaS

+0

Ja. Immer noch die gleiche Reaktion? Gibt es noch etwas anderes kaputt?/\\etwas \ /(.*)/ wie gesagt funktioniert? – sukkis