Fonctions de vérification de formulaire + fonctions utiles (extension de l'objet string)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 135 fois - Téléchargée 28 fois

Contenu du snippet

Fonctions optimisées: vérification de date, numero de tel, de secu, de chaines alphanumérique, nombres... Utiles : trim, replaceAll, formattage de date.

Ces fonctions étendent l'objet String, il faut donc les utiliser comme ceci:
'variableString'.'nomDeLaFunction'

ex:
var oneDate = "1-01-02"
oneDate = oneDate.completeDate(); // oneDate sera à 01/01/2002

ou

var oneNumber = "-128";
if (true == oneNumber.isNumber())
alert("oneNumber est un nombre !");

Source / Exemple :


// FONCTIONS UTILES

// Complete une date pour qu'elle soit au format JJ/MM/AAAA
// 1.01.1, 1/1/01, 01-01-01, 010101, 01012001 donneront tous 01/01/2001
// dans le cas ou l'année n'est pas complétement renseignée, 
// celle-ci est déduite en fonction de l'année en cours 
// (ex: 2/12/54 -> 02/12/1954 et 2/12/4 -> 02/12/2004)
String.prototype.completeDate = function() {
    var chain = this;
    if (/^\d+$/.test(chain) && (6 == chain.length || 8 == chain.length))
        chain = chain.substring(0, 2) + "/" + chain.substring(2, 4) + "/" + chain.substring(4, chain.length);
    var reg = /^(\d{1,2})[\/\.\\-](\d{1,2})[\/\.\\-](\d{1,4})$/;
    if (reg.test(chain)) {
        chain = chain.replace(reg, "$1/$2/$3");
        var tab = chain.split("/");
        for (var i = 0; i < 2; i++)
            tab[i] = eval(tab[i]) > 9 ? tab[i] : "0" + eval(tab[i]);
        if (4 != tab[2].length) {
            var ObjetDate = new Date();
            var year = new String(ObjetDate.getFullYear());
            if (eval(tab[2]) > eval(year.substring(2,4)))
                year = eval(year.substring(0,2) - 1) + year.substring(2,4);
            tab[2] = year.substring(0, 4 - tab[2].length) + tab[2];
        }
        return  tab.join("/");
    }
    return chain;
}

// Remplace toutes les occurences d'une chaine
String.prototype.replaceAll = function(search, repl) {
    var str = this;
    while (str.indexOf(search) != -1)
       str = str.replace(search, repl);
    return str;
}

// Supprime les espaces de début et de fin de chaine
String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

// VERIFICATION DE CHAINES DE CARACTERES

// Date au format JJ/MM/AAAA (à utiliser éventuellement avec completeDate())
// Vérifie si la date existe.
String.prototype.isDate = function() {
    if (/^\d{2}[\/]\d{2}[\/]\d{4}$/.test(this)) {
        var dat1 = this.split("/");
        var dat2 = new Date(dat1[2], dat1[1] - 1, dat1[0]);
        return (dat2.getDate() == dat1[0] && dat2.getMonth() == dat1[1]-1 && dat2.getFullYear() == dat1[2]);
    }
    return false;
}

// Caractères alphabétiques (accents pris en charge + espaces)
String.prototype.isAlpha = function() {
    return /^[A-Za-zÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôùû\s]+$/.test(this);
}

// Caractères alphanumériques (+ accents + espaces)
String.prototype.isAlphaNum = function() {
    return /^[\wÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôùû\s]+$/.test(this);
}

// Caractères numériques (= nombre positif)
String.prototype.isNumeric = function() {
    return /^\d+$/.test(this);
}

// La chaine représente un nombre (positif ou négatif)
String.prototype.isNumber = function() {
    return /^[-]?\d+$/.test(this);
}

// La chaine n'est pas constituée que de caractères d'espacement
String.prototype.isNotEmpty = function() {
    return !/^\s*$/.test(this);
}

// E-mail (vérifie juste que l'adresse est conforme puisque l'utilisateur peut toujours
// s'arranger pour donner une fausse adresse, ou une adresse temporaire...;-)
String.prototype.isEmail = function() {
    return /^[\w\._]+@[\w]{2,}[.][A-Za-z]{1,6}$/.test(this);
}

// Numéro de téléphone (formats: 0NNNNNNNNN, 0N-NN-NN-NN-NN, 
// 0N.NN.NN.NN.NN et 0N NN NN NN NN)
String.prototype.isNoTel = function() {
    return /^(0\d{9)|(0\d[ \.-]\d{2}[ \.-]\d{2}[ \.-]\d{2}[ \.-]\d{2})$/.test(this);
}

// Numéro de sécu
String.prototype.isNoSecu = function() {
    if (/^[12]\d{2}((1[0-2])|(0[1-9]))\d{10}$/.test(this)) {
        var secu = parseInt(this.substring(0, 13));
        var cle = parseInt(this.substring(13, 15));
        return cle == (97 - secu % 97);
    }
    return false;
}

Conclusion :


J'ai bien trouvé quelques fonctions un peu similaires sur ce site, mais elles n'étaient pas très satisfaisantes (J'en ai trouvé beaucoup du style "Usine à gaz"...). Ces fonctions n'étant pas très complexes à coder, je les ai donc écrites moi-même...

A voir également

Ajouter un commentaire

Commentaires

Messages postés
150
Date d'inscription
lundi 13 octobre 2003
Statut
Membre
Dernière intervention
21 décembre 2014

... en fait non ça marche pas, d'utiliser replaceAll pour ça car ça me fait une boucle infinie. ce qui est logique!
Messages postés
150
Date d'inscription
lundi 13 octobre 2003
Statut
Membre
Dernière intervention
21 décembre 2014

Bonjour,
ça serait sympa d'ajouter une fonction de protection des chaines: en gros il suffit de remplaçer ' par \' puis " par " et \ par \\
En tout cas il y a la fonction replaceAll() c'est déjà un grand pas :)
Messages postés
15
Date d'inscription
mercredi 31 août 2005
Statut
Membre
Dernière intervention
15 décembre 2005

Script tres tres interressant, tres pratique.

Juste une petite correction concernant le completeDate() : une toute petite erreur de ' ' s est reproduite 25 fois au moins (un copier-coller foireux?)
Voici la bonne fonction :

// Complete une date pour qu'elle soit au format JJ/MM/AAAA
// 1.01.1, 1/1/01, 01-01-01, 010101, 01012001 donneront tous 01/01/2001
// dans le cas ou l'année n'est pas complétement renseignée,
// celle-ci est déduite en fonction de l'année en cours
// (ex: 2/12/54 -> 02/12/1954 et 2/12/4 -> 02/12/2004)
String.prototype.completeDate = function() {
var chain = this;
if (/^\d+$/.test(chain) && (6 == chain.length || 8 == chain.length))
chain=chain.substring(0,2)+"/"+chain.substring(2,4)+"/"+chain.substring(4,chain.length);
var reg = /^(\d{1,2})[\/\.\\-](\d{1,2})[\/\.\\-](\d{1,4})$/;
if (reg.test(chain)) {
chain = chain.replace(reg, "$1/$2/$3");
var tab = chain.split("/");
for (var i = 0; i < 2; i++)
tab[i] = eval(tab[i]) > 9 ? tab[i] : "0" + eval(tab[i]);
if (4 != tab[2].length) {
var ObjetDate = new Date();
var year = new String(ObjetDate.getFullYear());
if (eval(tab[2]) > eval(year.substring(2,4)))
year = eval(year.substring(0,2) - 1) + year.substring(2,4);
tab[2] = year.substring(0, 4 - tab[2].length) + tab[2];
}
return tab.join("/");
}
return chain;
}
Messages postés
25
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
24 novembre 2008

Juste une petite correction, le motif du numero de téléphone etait incomplet ( accolade manquante )

// Numéro de téléphone (formats: 0NNNNNNNNN, 0N-NN-NN-NN-NN,
// 0N.NN.NN.NN.NN et 0N NN NN NN NN)
String.prototype.isNoTel = function() {
return /^(0\d{9})|(0\d[ \.-]\d{2}[ \.-]\d{2}[ \.-]\d{2}[ \.-]\d{2})$/.test(this);
}
Messages postés
40
Date d'inscription
lundi 8 mars 2004
Statut
Membre
Dernière intervention
10 décembre 2008

Merci pour toute ces fonctions qui peuvent effectivement être bien utile et sont simple à utiliser.

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.