0
votes

Faire correspondre le numéro de page dans le lien

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]);


1 commentaires

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.


3 Réponses :


0
votes

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.


1 commentaires

Parce qu'il y a en fait beaucoup plus de choses dans le lien que l'exemple que je publie ici.



1
votes

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]);


1 commentaires

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.



0
votes

Essayez de cette façon

var currentLink = "page_number=1";
var whatPage = currentLink.match(/[1-9]+/);  
 console.log(whatPage[0]);


0 commentaires