Expression réguliere / JS
fifo
-
Utilisateur anonyme -
Utilisateur anonyme -
salut a tous,
jai un probleme avec une expression réguliere en javascript
jessaie d'interdire que les 2 premiers caracteres soient différent de '00' et que la chaine de caractere ne soit que des chiffres avec 1 min de 9 chiffres
voila ce ke jai essayé (et échoué...) entre autres de faire avec ceci
si vous avez une idée
jai un probleme avec une expression réguliere en javascript
jessaie d'interdire que les 2 premiers caracteres soient différent de '00' et que la chaine de caractere ne soit que des chiffres avec 1 min de 9 chiffres
voila ce ke jai essayé (et échoué...) entre autres de faire avec ceci
var expr=/^[^(00)]\d{9,}$/
si vous avez une idée
11 réponses
-
euh attends... tu dis "interdire que ce soit différent" mais ton expression laisse plutôt penser que tu veux que ce soit différent
si tu veux que ce soit différent c'est ça:
/^[^(00)]\d\{7,\}$/
si tu veux interdire que ce soit différent c'est ça:
/^00\d\{7,\}$/
j'ai remplacé 9 par 7 puisque tu veux une chaîne de 9 chiffres et il y en a déjà 2
le début de chaîne différent de 00 on est bien d'acord que ça signifie que 00 n'est pas bon mais 10 est bon et 01 est bon
sinon c'est ça:
/^[^0][^0]\d\{7,\}$/
et ça dépend aussi si les deux premiers caractères doivent être aussi des chiffres, auquel cas le plus simple, dans le cas précédent, c'est
/^[1-9][1-9]\d\{7,\}$/
kinder.surprise,
caractère banane -
euh testé dans vi. Faudra peut-être que tu vires les antichlasses
kinder.surprise,
caractère banane -
Salut kinder,
merci pour ton aide
cest vrai que je n'ai pas été précis voir meme tres confus ;-)
en effet, il doit accepter1) x0aaaaaaa 2) 0xaaaaaaa 3) xxaaaaaaa
où
x = [1-9]
0 = 0
a = [0-9]
il doit donc refuser uniquement quand ca commence par le couple de chiffre '00'
donc je n'ai retenu que ta premiere version qui ressemble a la mienne et qui a comme défaut (et cest la que je ne comprend pas) quil n'acceptre pas le
2) 0xaaaaaaa
en attendant jai trouver une autre solution, elle a l'avantage de marcher mais elle n'est pas terrible
/^(([1-9]0)|(0[1-9])|([1-9][1-9]))\d{7,}$/
en effet, la c'était un cas 'simple' mais imaginons qu'a lavenir je veuille interdire le quatuor '0000' je devrais traité tout les cas possible au lieu dinterdire simplement le cas '0000' ??? -
derme :-|
bonche j'éplucherai la doc de perl tout à l'heure, ça m'intrige maintenant
kinder.surprise,
caractère banane -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
dorbel 8-|
ben j'ai beau chercher, je trouve pô 8-|
punaise ça doit pas être compliqué pourtant!
kinder.surprise,
caractère banane -
En Perl je ne sais pas exactement mais moi j'aurais mis ça :
/^[^0][^0][0-9]{7}[0-9]*?$/Jeff --WM@CCM---
le blême c'est que ça interdit aussi 019876543 ou 109876543
il y a seulement le 00 qui doit être interdit
j'ai trouvé une syntaxe du genre /^00\?trucbidule/ qui semble flanquer ce qui précède dans une sorte de variable ou un truc comme ça mais j'arrive pas à aller au delà... pourtant j'ai le sentiment que ça doit permettre une sorte d'inversion du critère... enfin bon je suis pas très clair là...
kinder.surprise,
caractère banane -
-
-
-
L'essentiel ce n'est pas que l'expression régulière soit la plus courte possible mais :
- qu'elle fonctionne
- qu'elle bouffe le moins de ressources possibles
Après on peut en faire un challenge personnel mais c'est autre chose !
Pour tout dire vu que c'est que des chiffres moi je ne prendrais pas une expression régulière pour ça ...
Je ferais un truc du genre :
if (int(chaine[0])*int(chaine[1]) != 0)
Et je vérifierais que tous les caractères sont des chiffres et qu'il y en a 9 ;-)
Jeff --WM@CCM--
-
-
CA Y EST!
(?(?=^00)^$|^\d{9,}$)
testé dans xnews, et dans The Bat!, les deux softs que j'ai qui collent au plus près avec la syntaxe originale
je vais rebouter sur le pingouin et voir mais ça semble bon
kinder.surprise,
caractère banane -
okie, testé dans pcretest, c'est bon
PCRE version 3.9 02-Jan-2002 re> /(?(?=^00)^$|^\d{9,}$)/ data> 0024abc45 No match data> 0012456 No match data> 0012548793654 No match data> 001234567 No match data> 011234567 0: 011234567 data> 101234567 0: 101234567 data> 111234567 0: 111234567 data> 11112365478965 0: 11112365478965 data> 0112345d6 No match
kinder.surprise,
caractère banane -
Wouhou !!!
Bookmarkage !
Jeff --WM@CCM-- -
Bravo pour ta ténacité, kinder !
;-)
mais je demandais en JS et non en perl (qui est effectivement plus complet niveau expression réguliere)
donc le probleme reste le meme pour moi :(
en tout cas merci pour ton aide -
euh c'est un peu comme si tu me demandais une instruction SQL en php là :-/
ou alors définis les specif des er en js
kinder.surprise,
caractère banane