12
votes

Incrémenter un nombre dans une chaîne dans la regex

Je reçois le nom d'un élément d'entrée, qui est une chaîne avec un numéro ( url1 ). Je veux incrémenter le nombre par 1 ( url2 ) de la manière la plus simple et la plus rapide possible.

My Way serait d'obtenir \ d / RestoFstring, ++ la correspondance, puis placez le numéro avec RESTOFSTRING. Y a-t-il une meilleure façon?

Mise à jour:

Mon code final (factice) est devenu: xxx


2 commentaires

Euh, vous ne pouvez pas simplement modifier les noms d'élément de formulaire comme celui-ci à IE. Vous allez courir dans des problèmes: Stackoverflow.com/Questtions/1650797/...


Ok, merci pour la tête. Si je finis par avoir besoin de supporter, c'est-à-dire que vous allez utiliser l'élément YUI.


4 Réponses :


1
votes

semble ok. Vous voudrez peut-être utiliser une regex comme ^ (. *?) (\ D +) $ , en vous assurant que le numéro que vous saisissez est à la fin de la chaîne.


0 commentaires

7
votes

simple. Utilisez une fonction de substitution avec des expressions régulières: xxx

définira la variable s à: abc100abc

mais ça obtient Plus compliqué si vous souhaitez vous assurer de ne changer qu'un certain paramètre dans l'URL: xxx

définira la variable s à: ? foo = 10 & bar = 100


3 commentaires

HM, la question n'était pas sur le point d'obtenir des paramètres?


Si vous lisez attentivement la question, l'Asker n'a pas précisé ce qu'il voulait changer exactement; Pas même que le nombre serait à la fin de l'URL - il l'utilise juste dans son exemple. Je pensais que la modification des paramètres de get serait un cas d'utilisation probable.


"Le nom d'un élément d'entrée" =



39
votes

Que diriez-vous de:

'url1'.replace(/\d+$/, function(n){ return ++n }); // "url2"
'url54'.replace(/\d+$/, function(n){ return ++n }); // "url55"


4 commentaires

Merci, j'ai mis à jour la question avec la solution que j'ai faite avec votre exemple


C'est une belle solution.


Voici une version légèrement modifiée qui fonctionne pour tous les numéros d'une chaîne: "url5part6" .replace (/ \ d + / g, fonction (n) {retour ++ n}); // retourne "url6part7"


Bonne réponse mais je ne parviens pas à voir la partie où nous "le jetterons en nombre"