2011-04-20 20 views
15

Necesito obtener la primera palabra después de barra en una url en javascript, supongo que usar una expresión regular sería ideal.Regex para obtener la primera palabra después de barra en URL

He aquí una idea de lo que las direcciones URL, posiblemente, puede verse como:

en negrita es lo que necesito para que coincida con la expresión regular para cada escenario, así que básicamente sólo la primera parte después de la barra, no importa cuántas barras más existen.

Estoy completamente perdido aquí, agradezco la ayuda.

+4

Técnicamente, la primera palabra después de una barra en sus ejemplos es 'mysite' ... Lo que queremos es la primera parte de la ruta de la URL componente. –

Respuesta

30

JavaScript con RegEx. Esto coincidirá con cualquier cosa después del primero/hasta que encontremos otro /.

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

gran respuesta mi amigo – JAF

+0

funciona muy bien para mí, thx. – Gabbax0r

+0

cuando la url es www.a.com/1/2, quiero/1/atrás. y cuando la url es www.a.com, quiero/retroceda, ¿se puede hacer esto en una sola expresión regular? – techguy2000

2

Pruebe con:

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

Tal vez esté mal, pero creo que debería ser '[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

Por alguna razón, estoy pensando que al intérprete de JavaScript no le gustará su solución de PHP. –

+1

Después de parpadear un par de veces, probablemente tenga razón ... Pero como hay muchas personas que piensan que Javascript se puede ejecutar en el servidor, puedo pretender que PHP puede ejecutar en el cliente :) –

+2

No están del todo mal si teniendo en cuenta Node.js ;-) –

1

Mi expresiones regulares es bastante malo, así que voy a improvisar con una solución menos eficiente: 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

no en expresiones regulares.

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

Aquí es la forma más rápida de conseguir que en javascript

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

explosión de una URL en JavaScript se puede hacer usando el funcionario rfc2396 regex:

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

Esto le da:

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

Donde se puede, en su caso, recuperar fácilmente camino con:

var firstPortion = exp[5].split("/")[1] 
Cuestiones relacionadas