J'essaie toujours de faire correspondre le numéro de page, mais tout ce que j'obtiens n'est pas défini. Qu'est-ce que je fais de mal?
var currentLink = "page_number=1"; var whatPage = currentLink.match(/page_number=([1-9])/g); console.log(whatPage[1]);
3 Réponses :
Une expression régulière est probablement exagérée ici. Pourquoi ne pas simplement utiliser split () comme ceci:
var whatPage = currentLink.match(/page_number=([1-9]+)/); console.log(whatPage[1]);
Cependant, si une expression régulière est nécessaire, vous pouvez utiliser:
var whatPage = currentLink.split('=')[1];
Remarque, j'ai ajouté le symbole +
dans le cas où votre page le nombre n'est pas strictement compris entre 1 et 9.
Parce qu'il y a en fait beaucoup plus de choses dans le lien que l'exemple que je publie ici.
Le problème est que vous utilisez l'indicateur / g
, qui renverra un tableau de all correspondances à cette expression régulière dans la chaîne (sans tenir compte des groupes de capture - ils ne sont pas visibles dans la sortie avec / g
) - par exemple, si l'entrée était page_number = 1, page_number = 2
, cela donnerait page_number = 2
.
var currentLink = "page_number=1"; var whatPage = currentLink.match(/page_number=([1-9])/); console.log(whatPage[1]);
Pour utiliser le groupe de capture de la seule correspondance, supprimez simplement l'indicateur global:
var currentLink = "page_number=1,page_number=2"; var whatPage = currentLink.match(/page_number=([1-9])/g); console.log(whatPage[1]);
Il convient de noter qu'à moins que vous ne sachiez que le numéro de page est strictement 1-9, vous pouvez ajouter le symbole +
à la fin de votre expression régulière (c'est-à-dire currentLink.match (/ page_number = ([1-9] +) /);
pour couvrir n'importe quel nombre de chiffres.
Essayez de cette façon
var currentLink = "page_number=1"; var whatPage = currentLink.match(/[1-9]+/); console.log(whatPage[0]);
Si vous essayez d'obtenir des valeurs de paramètre à partir d'une URL, plutôt que d'écrire un RegEx individuel pour chaque paramètre attendu, envisagez d'utiliser quelque chose comme
searchParams
à la place.