2011-04-20 16 views
15

Potrzebuję dostać pierwsze słowo po slash w adresie URL w javascript, zakładam, że użycie regex byłoby idealne.Regex, aby uzyskać pierwsze słowo po slash w URL

Oto pomysł na to, co URL może ewentualnie wyglądać następująco:

W pogrubienie to, czego potrzebuję regex, aby dopasować do każdego scenariusza, więc w zasadzie tylko pierwszą część po ukośniku, bez względu na to, ile dodatkowo ukośniki istnieją.

Mam tu całkowitą stratę, doceniam pomoc.

+4

Technicznie, pierwsze słowo po ukośnik w twoich przykładów jest „mojawitryna” ... Co chcesz to pierwsza część ścieżce URL składnik. –

Odpowiedz

30

JavaScript z regeksem. To będzie pasować do wszystkiego po pierwszym/dopóki nie napotkamy innego /.

window.location.pathname.replace(/^\/([^\/]*).*$/, '$1'); 
+0

wspaniała odpowiedź mój przyjaciel – JAF

+0

działa świetnie dla mnie, thx. – Gabbax0r

+0

, gdy adres URL to www.a.com/1/2, chcę/1/wstecz. a kiedy adres URL to www.a.com, chcę/z powrotem, czy można to zrobić w jednym pojedynczym wyrażeniu regularnym? – techguy2000

2

Spróbuj z:

var url = 'http://mysite.com/section-with-dashes/'; 
var section = url.match(/^http[s]?:\/\/.*?\/([a-zA-Z-_]+).*$/)[0]; 
+0

Być może jestem w błędzie, ale myślę, że powinno to być "[1];' http://jsfiddle.net/AvHd3/ – Squirrl

-1
$url = 'http://mysite.com/section/subsection'; 

$path = parse_url($url, PHP_URL_PATH); 

$components = explode('/', $path); 

$first_part = $components[0]; 
+3

Z jakiegoś powodu myślę, że interpreter JavaScript nie spodoba się twojemu rozwiązaniu PHP. –

+1

Po kilkukrotnym mrugnięciu pewnie masz rację ... Ale ponieważ jest wiele osób, które uważają, że JavaScript może być uruchamiany na serwerze, mogę udawać, że PHP może wykonać na kliencie :) –

+2

Nie są całkowicie błędne, jeśli biorąc pod uwagę Node.js ;-) –

1

Moje regex jest bardzo złe, więc będę improwizować z mniej wydajne rozwiązanie: P

// The first part is to ensure you can handle both URLs with the http:// and those without 

x = window.location.href.split("http:\/\/") 
x = x[x.length-1]; 
x = x.split("\/")[1]; //Result is in x 
12

Non-regex.

var link = document.location.href.split('/'); 
alert(link[3]); 
1

Oto szybki sposób, że w javascript

var urlPath = window.location.pathname.split("/"); 
if (urlPath.length > 1) { 
    var first_part = urlPath[1]; 
    alert(first_part); 
} 
7

Exploding url w javascript można zrobić za pomocą oficjalna rfc2396 regex:

var url = "http://www.domain.com/path/to/something?query#fragment"; 
var exp = url.split(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/); 

Będzie to daje:

["", "http:", "http", "//www.domain.com", "www.domain.com", "/path/to/something", "?query", "query", "#fragment", "fragment", ""] 

Gdzie można, w danym przypadku, łatwo odzyskać ci ścieżkę z:

var firstPortion = exp[5].split("/")[1] 
Powiązane problemy