2010-07-23 3 views
0

similaires à ma question précédente:Extraction numéro ID d'une URL dans Javascript

spliting a string in Javascript

Les URL ont changé et l'ID du numéro unique n'est plus à la fin de l'URL comme ceci:

/MarketUpdate/Pricing/9352730/Report 

Comment puis-je extraire le nombre de ce que je peux maintenant pas utiliser la solution précédente?

+0

chacune des solutions ci-dessous fonctionnerait pour vous, alors je vous conseille d'aller avec celui qui est moins susceptible de se briser à l'avenir . L'option regex cassera si elle rencontre 2 ou plusieurs numéros à l'intérieur de l'URL, alors que l'option split cassera si le nombre est rencontré dans une position différente (donc ignoré). –

+0

@Ioannis Karadimas: Plus précisément, l'expression régulière correspondra au premier numéro qui est enfermé dans des barres obliques, i. e. il correspond '123' dans'/foo/123/bar/456/baz'. Il ne se contente pas correspondre * un numéro de *, il fonctionne correctement pour les chaînes comme '/ foo123/bar/456/baz' et matchs' 456'. –

+0

@Tim Pietzcker: Désolé, je n'ai pas bien défini la fonction de l'expression rationnelle. Cependant, je faisais référence au cas général où il apparaîtra 123 dans/foo/123/bar/456 /. Si le nombre unique désiré est 456, je pense que le problème est évident. Tout se résume à la forme générale attendue de l'URL. –

Répondre

6

Vous pouvez rechercher

/(\d+)/ 

et utiliser backreference pas. 1 qui contiendra le numéro. Notez que cela nécessite que le nombre soit toujours délimité par des barres obliques des deux côtés. Si vous souhaitez également faire correspondre les numéros à la fin de la chaîne, utilisez

/(\d+)(?:/|$) 

En JavaScript:

var myregexp = /\/(\d+)\//; 
// var my_other_regexp = /\/(\d+)(?:\/|$)/; 
var match = myregexp.exec(subject); 
if (match != null) { 
    result = match[1]; 
} else { 
    result = ""; 
} 
2

Si les URL ressemblent toujours comme ça, pourquoi ne pas utiliser split()?

var ID = url.split('/')[3]; 
+0

Je ne suis pas sûr qu'ils vont toujours ressembler à ça. Ils auront toujours un nombre unique cependant. – RyanP13

1
urlstring = "/MarketUpdate/Pricing/9352730/Report" 
$str = urlstring.split("/"); 
alert($str[3]); 

Cette divise la chaîne à chaque fois qu'il trouve le symbole/et le stocke dans un tableau, vous pouvez alors obtenir chaque mot dans le tableau en utilisant $ str [0]