Page 1 sur 1

Problème sur une Regex

Posté : 31 mars 2010, 15:43
par VaN
Bonjour,

J'ai une chaîne de cractères qui vaut rapport_etudes[0][type], et j'aimerai la transformer, à l'aide d'une regex (ou autre, mais je pense que la regex est le moyen le plus simple), en rapport_etudes[1][type].

Et il faudrait que cela fonctionne avec n'importe quel nombre, et n'importe quelle chaine de caractère suivant ce nombre.

Exemples :
rapport_etudes[1][type] devient rapport_etudes[2][type]
rapport_etudes[14][nationalite] devient rapport_etudes[15][nationalite]

Mais je n'arrive pas à mettre au point la regex.

Re: Problème sur une Regex

Posté : 31 mars 2010, 15:55
par stealth35
pourquoi tu veux faire ca ? c'est des données qui viennent d'un tableau ?

Re: Problème sur une Regex

Posté : 31 mars 2010, 16:04
par macgawel
Comme stealth35, je serais curieux de connaître la raison de ta demande...

Sinon, ce n'est pas faisable uniquement avec des REGEXP (à ma connaissance), vue que les REGEXP servent à traiter du texte, alors que là tu veux travailler sur des nombres.

Le plus simple, à mon avis :
- Découper la chaîne en trois : rapport_etudes[, 0, ][type]
- Transtypage de la deuxième chaîne (le 0) en entier.
- Incrémentation.
- Reconstitution de la chaîne.

[Edit]Erreur de frappe :oops:

Re: Problème sur une Regex

Posté : 31 mars 2010, 16:23
par stealth35
Sinon, ce n'est pas faisable uniquement avec des REGEXP (à ma connaissance)
mais si :wink:
var tex = 'rapport_etudes[1][type]';
var pat	= /\[(\d+)\]/;
var val	= parseInt(tex.match(pat)[1]) + 1;
var rep	= tex.replace(pat, '[' + val + ']');

//console.log(rep);
//rapport_etudes[2][type]

Re: Problème sur une Regex

Posté : 31 mars 2010, 16:49
par macgawel
parseInt() convertit une chaine en un nombre entier.
Je ne pense pas qu'on puisse classer cette fonction dans les REGEXP.

Donc je persiste, ce n'est pas faisable uniquement avec des REGEXP !

Re: Problème sur une Regex

Posté : 31 mars 2010, 16:54
par stealth35
si tu veux :wink: , mais c'est quand meme plus classe que
Le plus simple, à mon avis :
- Découper la chaîne en trois : rapport_etudes[, 0, ][type]
- Transtypage de la deuxième chaîne (le 0) en entier.
- Incrémentation.
- Reconstitution de la chaîne.
si t'aime pas parseInt on peu faire ca
var val	 = +(tex.match(pat)[1]) + 1;

Re: Problème sur une Regex

Posté : 31 mars 2010, 23:39
par VaN
pourquoi tu veux faire ca ? c'est des données qui viennent d'un tableau ?
Oui. Enfin c'est un nom de champ de formulaire, que je vais cloner, grâce à la fonction clone() de jQuery, et il faudrait que j'incrémente la valeur entre crochet.
var pat = /\[(\d+)\]/;
Il me semble que "d" signifie digit, donc 1 chiffre, de 0 à 9. Or, ma valeur peut être un nombre.

En fait, le problème n'a plus lieu d'être, car je l'ai résolu autrement. l'incrémentation se fait en PHP, au moment de la génération de la nouvelle ligne, et plus en Javascript. Toutefois, ça m'intéresserait d'avoir une réponse qui fonctionne, car ça pourrait m'être utile pour une prochaine fois.

Re: Problème sur une Regex

Posté : 01 avr. 2010, 00:27
par stealth35
Il me semble que "d" signifie digit, donc 1 chiffre, de 0 à 9. Or, ma valeur peut être un nombre.
et le "+" signifie plusieurs :wink: