Expression réguliere / JS

Fermé
fifo - 20 avril 2004 à 14:42
 Utilisateur anonyme - 26 avril 2004 à 12:46
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

11 réponses

Utilisateur anonyme
20 avril 2004 à 19:17
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
20 avril 2004 à 19:18
euh testé dans vi. Faudra peut-être que tu vires les antichlasses

kinder.surprise,
caractère banane
0
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
21 avril 2004 à 14:33
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
22 avril 2004 à 01:44
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 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 266
22 avril 2004 à 15:24
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
22 avril 2004 à 15:28
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 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 266
22 avril 2004 à 15:28
ou mieux :


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


                                   Jeff  --WM@CCM--
0
Utilisateur anonyme
22 avril 2004 à 15:29
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 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 266 > Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023
22 avril 2004 à 15:30
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 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 266 > Utilisateur anonyme
22 avril 2004 à 15:33
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
22 avril 2004 à 17:28
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
22 avril 2004 à 18:04
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 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 266
22 avril 2004 à 20:02
Wouhou !!!

Bookmarkage !

                                   
Jeff  --WM@CCM--
0
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
26 avril 2004 à 12:46
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