J'essaie de sélectionner ce qui vient après le name=
et avant le &
dans:
"/pages/new?name=J&return_url=/page/new"
Jusqu'ici j'ai ..
^name=(.*?).
J'essaie de revenir dans ce cas, juste la J
, mais sa dynamique permet de très nombreux caractères, lettres ou chiffres.
Le cas de figure final me permettrait de faire une déclaration replace
sur cette variable dynamique trouvée par regex.
Améliorer les réponses précédentes:
/**
*
* @param {string} name
* @returns {string|null}
*/
function getQueryParam(name) {
var q = window.location.search.match(new RegExp('[?&]' + name + '=([^&#]*)'));
return q && q[1];
}
getQueryParam('a'); // returns '1' on page http://domain.com/page.html?a=1&b=2
La réponse acceptée inclut la partie hachage s'il y a un hachage juste après les paramètres. Comme @bishoy a dans sa fonction, la regex correcte serait
/name=([^&#]*)/
voici la fonction complète (testée et corrigée pour les majuscules/minuscules)
function getParameterByName (name)
{
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name.toLowerCase() + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.search.toLowerCase());
if (results == null)
return "";
else
return decodeURIComponent(results[1].replace(/\+/g, " "));
}
Ce qui suit devrait fonctionner:
\?name=(.*?)&
var myname = str.match(/\?name=([^&]+)&/)[1];
Le [1] est parce que vous voulez apparemment la valeur du groupe (la partie de l'expression régulière entre parenthèses).
var str = "/pages/new?name=reaojr&return_url=/page/new";
var matchobj = str.match(/\?name=([^&]+)&/)[1];
document.writeln(matchobj); // prints 'reaojr'