2012-08-09 4 views
-1

Je suis en train de sortir avec une expression regulat pour extraire la valeur d'un paramètre querystring: expression régulière pour analyser la chaîne url

jusqu'à présent maintenant, je suis venu avec ce qui suit:

app.getValue = function() { 
    var regExp = '[&?]'+$("#token").val()+'=(.*?)[&$]'; 
    var re = new RegExp(regExp); 
    var res = re.exec($("#url").val()); 
    if (!res) return ''; 
    return res[1] || ''; 
} 

le problème semble être que le « $ » à la fin de l'expression resultar est interepreted comme un caractère littéral, et non comme la fin de la chaîne d'entrée

donc avec le querystring de followgin:

http://wines?len=10&page=500&filter=bogota and salvador&sort=name asc 

recherche le jeton « genre » ne me touche rien, si j'ajoute un « & » ou « $ » à la fin de la chaîne, il fonctionne ...

Suis-je manque quelque chose ?

+0

double possible [chaîne de requête JavaScript] (http://stackoverflow.com/questions/647259/javascript-query-string) – katspaugh

Répondre

1

Il semble qu'il ne soit pas possible d'exprimer un caractère de fin de ligne à l'intérieur d'un groupe de classes de caractères. Au lieu de cela, je pense que vous pouvez simplement utiliser (&|$|,) pour faire correspondre une virgule, une perluète ou une fin de ligne. Notez que cela crée un nouveau groupe de correspondance, mais cela ne devrait pas affecter votre code.

+0

vous avez raison, merci beaucoup! – opensas

1

Essayez cette

var urlParams = {}; 
(function() { 
    var match, 
     pl  = /\+/g, // Regex for replacing addition symbol with a space 
     search = /([^&=]+)=?([^&]*)/g, 
     decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, 
     query = window.location.search.substring(1); 

    while (match = search.exec(query)) 
     urlParams[decode(match[1])] = decode(match[2]); 
})(); 

exemple:

?var1=test1&var2=test2 

Résultat:

alert(urlParams["var1"]); 
+0

très beau morceau de code, j'essaie toujours de bien saisir cette expression régulière ... – opensas

Questions connexes