Expression réguliere / JS

fifo -  
 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

var expr=/^[^(00)]\d{9,}$/


si vous avez une idée
A voir également:

11 réponses

Utilisateur anonyme
 
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
0
Utilisateur anonyme
 
euh testé dans vi. Faudra peut-être que tu vires les antichlasses

kinder.surprise,
caractère banane
0
fifo
 
Salut kinder,
merci pour ton aide

cest vrai que je n'ai pas été précis voir meme tres confus ;-)

en effet, il doit accepter
1) x0aaaaaaa 
2) 0xaaaaaaa 
3) xxaaaaaaa



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' ???
0
Utilisateur anonyme
 
derme :-|

bonche j'éplucherai la doc de perl tout à l'heure, ça m'intrige maintenant

kinder.surprise,
caractère banane
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
dorbel 8-|

ben j'ai beau chercher, je trouve pô 8-|

punaise ça doit pas être compliqué pourtant!

kinder.surprise,
caractère banane
0
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277
 
En Perl je ne sais pas exactement mais moi j'aurais mis ça :

/^[^0][^0][0-9]{7}[0-9]*?$/



                                   Jeff  --WM@CCM--
0
Utilisateur anonyme
 
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
0
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277
 
ou mieux :


/^(([0-9][1-9][0-9]{5})||([1-9][0-9]{6}))[0-9]*?$/


                                   Jeff  --WM@CCM--
0
Utilisateur anonyme
 
en fait l'exclusion on est d'accord que c'est toujours sous la forme [^x] où x est un caractère mais il doit bien y avoir un moyen de passer un mot complet à la place du x mais j'arrive pas à trouver comment

kinder.surprise,
caractère banane
0
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277 > Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention  
 
Remarque j'avais pas vu celle proposée à la base qui était encore mieux...

                                   
Jeff  --WM@CCM--
0
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277 > Utilisateur anonyme
 
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--
0
Utilisateur anonyme
 
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
0
Utilisateur anonyme
 
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
0
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277
 
Wouhou !!!

Bookmarkage !

                                   
Jeff  --WM@CCM--
0
fifo
 
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
0
Utilisateur anonyme
 
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
0