Fonction regex multiples validation formulaire

0/5 (8 avis)

Snippet vu 7 495 fois - Téléchargée 15 fois

Contenu du snippet

En attendant le déploiement du HTML 5, voici une petite fonction regex qui stocke les expressions régulières les plus courantes et donc permet de valider une bonne partie des champs connus dans les formulaires !

Source / Exemple :


function regex(Variable) {
	switch (Variable) {
		case "texte"   : reg = new RegExp("^(.|\n|\r|\n\r){3,}$","i"); break; // texte de 3 caractères minimum, retour à la ligne possible  
		case "mail"    : reg = new RegExp("^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,3}\\s*$","i"); break; // adresse mail valide customer@fai.ext  
		case "mdp"     : reg = new RegExp("^.{5,32}$","i"); break; // mot de passe entre 5 et 32 caractères  
		case "date"    : reg = new RegExp("^[0-9]{2}/[0-9]{2}/[0-9]{4}$","i") ; break; // date au format 01/01/2000  
		case "ip"      : reg = new RegExp("^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$","i"); break; // adresse IPV4  
		case "tel"     : reg = new RegExp("^0[1-9]([-. ]?[0-9]{2}){4}$","i"); break; // numéro de téléphone français  
		case "cp"      : reg = new RegExp("^[0-9]{5}$","i"); break; // code postal  
		case "fichier" : reg = new RegExp("^.+\.[a-zA-Z]{2,5}$","i"); break; // fichiers à uploader  
		// Ajoutez ici vos expressions  
	}
	return reg;
};

Conclusion :


Cas d'utilisation :

var input = window.prompt("Saisissez le nouveau nom :", "dossier/image.jpg");
var fileOK = regex("fichier");

if(!fileOK.test(input))
alert("votre saisie est incorrecte !");

A voir également

Ajouter un commentaire

Commentaires

Jormund
Messages postés
8
Date d'inscription
samedi 27 décembre 2008
Statut
Membre
Dernière intervention
9 mars 2011
-
Bien que le code soit indiqué débutant, je trouve dommage que pour les dates il soit simpliste et pas forcément utilisable en pratique.
Il ne suffit pas qu'un texte soit composé de chiffres séparés par des / pour être une date valide ( "97/42/3446" n'est pas une date).

Par ailleurs, ce sont des un détails mais:
-Les domaines de premier niveau peuvent avoir plus de 3 caractères (.info par exemple)
-Pour les fichiers l'extension aussi être plus courte que 2 caractères, et peut dépasser 5 caractères (.tar.gz par exemple) Sous les windows récents, la seule limite est la taille des chemins qui ne peut dépasser 260 caractères.
-(.|\n|\r|\n\r) fait la même chose que (.|\n|\r)
-tu acceptes les chiffres, tirets et underscore dans les mails mais pas dans les noms de fichier (ça peut être un choix, mais je ne sais pas si il était volontaire)
tefa24600
Messages postés
30
Date d'inscription
samedi 4 août 2007
Statut
Membre
Dernière intervention
21 février 2012
-
Merci pour le commentaire, j'avais besoin d'un regard neuf sur ces fonctions regexp.

J'avoue que certaines de ces fonctions ont été trouvées sur le net et me permettaient de reprendre ce code à chaque fois que j'avais besoin de vérifier un champ.

en ce qui concerne les fichiers (précisés destinés à uploader), je les nettoie de tout caractère spécial et comme généralement il s'agissait d'images ou de fichiers à extensions "normales" (pas plus de 3 caractères), je ne me suis pas em....é à faire une super (lourde) fonction regexp !
Jormund
Messages postés
8
Date d'inscription
samedi 27 décembre 2008
Statut
Membre
Dernière intervention
9 mars 2011
-
Je viens de me relire et de voir que l'exemple d'extension de plus de 5 caractères que je donne est stupide, il contient un point et serait accepté par ta regex.
".torrent" est un autre exemple de fichier courant avec une extension longue.
Après, si tu ne veux accepter que des images par exemple, tu aurais intérêt à être plus précis et mettre exactement la liste des extensions que tu acceptes plutôt qu'une limite de 3 caractères.
tefa24600
Messages postés
30
Date d'inscription
samedi 4 août 2007
Statut
Membre
Dernière intervention
21 février 2012
-
C'est vrai que d'allonger la limite encore un peu plus n'est pas très intelligent, mais je voulais que ma source soit la plus "portable" possible, qu'elle puisse se généraliser et éviter aux utilisateurs de s'arracher les cheveux avec ces saletés de regexp !

Dans un autre sens, si je propose une source qui ne remplit pas totalement son rôle, elle ne sert à rien.

Je te remercie pour ces critiques et je vais faire en sorte de pallier à ces problèmes !
cs_nino31
Messages postés
17
Date d'inscription
jeudi 6 mars 2008
Statut
Membre
Dernière intervention
29 avril 2013
-
En tout cas, vu la complexité des regex l'initiative de créer une classe "Regex" est très bonne...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.