Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1691 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  regex validant chaine de caractères pouvant être nulle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

regex validant chaine de caractères pouvant être nulle

n°1790619
lmAllia
Posté le 22-09-2008 à 18:17:09  profilanswer
 

Bonjour,
 
j'utilise la regex suivante pour valider un numéro de tél
 
^(\+){0,1}[0-9/ \-\.]{8,25}$
 
mon pb est que ma regex s'applique automatiquement à toutes mes saisies et que les input peuvent être vides (dans ce cas la regex actuelle ne valide pas - cette valide serait nickel si les champs étaient obligatoire alors que certains sont facultatifs)
 
donc, comment puis-je faire pour valider tout contenu non vide mais aussi les absences de saisie
 
merci

mood
Publicité
Posté le 22-09-2008 à 18:17:09  profilanswer
 

n°1790620
omega2
Posté le 22-09-2008 à 18:20:30  profilanswer
 

Le plus simple : commencer par regarder si le contenu est plein ou vide et, s'il y a du texte, appliquer la regexp pour vérifier que le contenu est valide.

n°1790621
lmAllia
Posté le 22-09-2008 à 18:33:00  profilanswer
 

c'est malheureusement impossible car j'utilise un outil qui à un stupide fonctionnement permettant d'appliquer des syntaxes (regex) sur des champs sans possibilité de tester s'ils sont vides ou pas :-(

n°1790637
gatsu35
Blablaté par Harko
Posté le 22-09-2008 à 20:07:32  profilanswer
 

lmAllia a écrit :

c'est malheureusement impossible car j'utilise un outil qui à un stupide fonctionnement permettant d'appliquer des syntaxes (regex) sur des champs sans possibilité de tester s'ils sont vides ou pas :-(


encore un magnifique outil de merde  [:icon14]

n°1790643
lmAllia
Posté le 22-09-2008 à 20:29:56  profilanswer
 

gatsu35 a écrit :


encore un magnifique outil de merde  [:icon14]


 
Pour l'éditeur c'est moi qui suis une burne de ne pas savoir intégrer le null au niveau de ma regex :-(

n°1790646
gatsu35
Blablaté par Harko
Posté le 22-09-2008 à 20:33:17  profilanswer
 

lmAllia a écrit :

 

Pour l'éditeur c'est moi qui suis une burne de ne pas savoir intégrer le null au niveau de ma regex :-(


parce que ca s'integre pas forcément, si un objet faut null, il faut null
ca te sort une erreur JS ?

Message cité 1 fois
Message édité par gatsu35 le 22-09-2008 à 20:33:38
n°1790696
lmAllia
Posté le 22-09-2008 à 23:09:09  profilanswer
 

gatsu35 a écrit :


parce que ca s'integre pas forcément, si un objet faut null, il faut null  
ca te sort une erreur JS ?


 
 
je précise: dans l'outil utilisé qui permet de concevoir des appli web, on peut associer des syntaxes définies par des expressions régulières sur des champs de saisie de formulaire.
 
le pb est que si je colle une syntaxe sur des champs "tel", "mail", "ip" ... le moteur rend le contrôle de cette syntaxe obligatoire. Donc si le champs de mon formulaire était facultatif et que je n'alimente pas le champ "téléphone", je vais me choper une jolie alerte javascript me disant que mon numéro n'est pas conforme. (alors que si j'avais la main sur le javascript de contrôle je n'aurais fait une validation de la regex que si une valeur était saisie.)

n°1790730
gatsu35
Blablaté par Harko
Posté le 23-09-2008 à 04:15:42  profilanswer
 

bon j'ai trouvé ce que tu peux lui mettre comme regexp :D
l'idée c'est de retourner true, meme si le champ est vide
 
et donc au niveau JS la methode est de faire un OR dans la regexp.
 
prenons un exemple.
tu dois valider un numéro de 10 chiffres. Si on écrit littéralement ta regexp ça donne :  

Code :
  1. /^\d{10}$/


 
mais pour gérer 2 regexp (ou validations dans notre cas) dans une seule regexp il suffit de mettre les morceaux entre paranthèses et les séparer par un |, sans oublier les caractères de délimitation de début et de fin d'une regexp:  
ex : 8 lettres OU 10 chiffres
/^([a-z]{8}|\d{10}$/
 
en gros si on vire la validation des lettres on obtiens ceci :  
/^(|\d{10}$/
et ça marche :  
 

Code :
  1. >>> /^(|\d{10})$/.test('1234567890')
  2. true
  3. >>> /^(|\d{10})$/.test('123456789')
  4. false
  5. >>> /^(|\d{10})$/.test('')
  6. true


n°1790746
lmAllia
Posté le 23-09-2008 à 08:31:02  profilanswer
 

gatsu35 a écrit :

bon j'ai trouvé ce que tu peux lui mettre comme regexp :D
l'idée c'est de retourner true, meme si le champ est vide
 
et donc au niveau JS la methode est de faire un OR dans la regexp.
 
prenons un exemple.
tu dois valider un numéro de 10 chiffres. Si on écrit littéralement ta regexp ça donne :  

Code :
  1. /^\d{10}$/


 
mais pour gérer 2 regexp (ou validations dans notre cas) dans une seule regexp il suffit de mettre les morceaux entre paranthèses et les séparer par un |, sans oublier les caractères de délimitation de début et de fin d'une regexp:  
ex : 8 lettres OU 10 chiffres
/^([a-z]{8}|\d{10}$/
 
marche nickel !
 
un grand merci.
 
en gros si on vire la validation des lettres on obtiens ceci :  
/^(|\d{10}$/
et ça marche :  
 

Code :
  1. >>> /^(|\d{10})$/.test('1234567890')
  2. true
  3. >>> /^(|\d{10})$/.test('123456789')
  4. false
  5. >>> /^(|\d{10})$/.test('')
  6. true





Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  regex validant chaine de caractères pouvant être nulle

 

Sujets relatifs
Extraire des chaines de caractèresRegex et séparateur de champs
Probleme encodage de caractères étendus après copier/collerRemplacer une chaine de charactères
GTK - Caractères bizaresaffichage des caractères en j2me
SQL Server concatener champ + chaine IMPOSSIBLEIsoler un texte avec du regex^p
Modification des caractères en j2me\n et regex
Plus de sujets relatifs à : regex validant chaine de caractères pouvant être nulle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR