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

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

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.