regex validant chaine de caractères pouvant être nulle

regex validant chaine de caractères pouvant être nulle - HTML/CSS - Programmation

Marsh Posté le 22-09-2008 à 18:17:09    

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

Reply

Marsh Posté le 22-09-2008 à 18:17:09   

Reply

Marsh Posté le 22-09-2008 à 18:20:30    

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.

Reply

Marsh Posté le 22-09-2008 à 18:33:00    

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 :-(

Reply

Marsh Posté le 22-09-2008 à 20:07:32    

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]

Reply

Marsh Posté le 22-09-2008 à 20:29:56    

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 :-(

Reply

Marsh Posté le 22-09-2008 à 20:33:17    

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
Reply

Marsh Posté le 22-09-2008 à 23:09:09    

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.)

Reply

Marsh Posté le 23-09-2008 à 04:15:42    

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


Reply

Marsh Posté le 23-09-2008 à 08:31:02    

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




Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed