Problème sur une Regex

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème sur une Regex

Re: Problème sur une Regex

par stealth35 » 01 avr. 2010, 00:27

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:

Re: Problème sur une Regex

par VaN » 31 mars 2010, 23:39

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

par stealth35 » 31 mars 2010, 16:54

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

par macgawel » 31 mars 2010, 16:49

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

par stealth35 » 31 mars 2010, 16:23

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

par macgawel » 31 mars 2010, 16:04

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

par stealth35 » 31 mars 2010, 15:55

pourquoi tu veux faire ca ? c'est des données qui viennent d'un tableau ?

Problème sur une Regex

par VaN » 31 mars 2010, 15:43

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.