TRIM, REMOVESPACE, PATTERN MAIL, PATTERN TÉLÉPHONE, PATTERN DATE...

cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014 - 21 oct. 2009 à 22:01
MuslimTanger Messages postés 5 Date d'inscription jeudi 16 décembre 2010 Statut Membre Dernière intervention 18 janvier 2011 - 26 oct. 2009 à 19:18
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50721-trim-removespace-pattern-mail-pattern-telephone-pattern-date

MuslimTanger Messages postés 5 Date d'inscription jeudi 16 décembre 2010 Statut Membre Dernière intervention 18 janvier 2011
26 oct. 2009 à 19:18
c trésssssss bien
pegos Messages postés 2 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 26 octobre 2009
26 oct. 2009 à 11:36
Re Autant pour moi, j'ai été trop vite.
Une année est bissextile si divisible par 4 mais par par 100 à moins qu'elle soit divisible par 400 !
On a donc:
v = e.test(this) ? (parseInt(vs[1]) > 12 || parseInt(vs[1]) < 1 ? false : ((parseInt(vs[1]) != 2) ? (parseInt(vs[0]) > m[parseInt(vs[1])-1] ? false : true) : (parseInt(vs[0]) > ((vs[2]%4 == 0 && vs[2]%100 != 0)||vs[2]%400 == 0 ? m[1]+1 : m[1]) ? false : true))) : false;

Mille excuses.
PEGOS
pegos Messages postés 2 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 26 octobre 2009
26 oct. 2009 à 11:25
Bonjour,
Sauf erreur de ma part pour la vérif de date, une année est bissextile si elle est divisible par 4 mais pas par 400.
On a donc:
v = e.test(this) ? (parseInt(vs[1]) > 12 || parseInt(vs[1]) < 1 ? false : ((parseInt(vs[1]) != 2) ? (parseInt(vs[0]) > m[parseInt(vs[1])-1] ? false : true) : (parseInt(vs[0]) > (vs[2]%4 == 0 && vs[2]%400 != 0 ? m[1]+1 : m[1]) ? false : true))) : false;

A+
PEGOS
astro53 Messages postés 48 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 5 août 2009
22 oct. 2009 à 10:42
Salut LaboTemplates, je viens de lire ton code et les commentaires.
Je cite: "Ayant mis le code en catégorie débutant, ça serait bien qu'un débutant comprenne le code à minima, donc découpage...". Malgre un niveau correct que j ai en javascript je n arrive pas a comprendre une partie de son contenue.
Je ne trouve vraiment pas que ce genre de function soit a un niveau debutant puisque je ne saurais pas ecrire un truc pareil. Donc bravo je vais essayer de comprendre ca en recherchant qu est ce que Sting et qu est ce que property et qu est ce que String.property. Si j ai bien compris String.property est un array vu que tu ecris obj[property] mais a part ca je n ai aucune idee de quel est cette valeur. C est le noir total.
Bref si tu pouvais m'eclairer sur tout ca je t en remercie d'avance et si tu peux modifie ca en niveau intermediaire. Parce que c est pas un debutant comme moi qui pourtant peut creer des menus dynamiques en javascript ou autre du genre, qui peut comprendre ca facilement.

A bientot
Astro
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
22 oct. 2009 à 00:21
re labotemplates !
alors concernant le trim, ok mais le mieux, même pour un débutant c'est le découpage niveaux regexp na {;o)

concernant le hasOwnProperty, j'ai recherché vite fais sur google , des problèmes de comptabilité, mais j'en ait pas trouvé :( ...j'ai pas du faire la nuance entre son rôle, qui pose problème , et son implémentation par les navigateurs :( .... , mais c'est là le probleme, c'est son rôle, quand on utilise cette fonction, on demande à l'objet toutes ses variable définit par sa classes de base, ou implémenté (écrite ou réécrite) par l instance, hors, elle n 'a pas lieux d étre dans ton teste ... pk vouloir passé absolument juste les propriété qui ne sont pas hérité?? ... si t'a un ptit niveau programmation orienté OO, tu comprendra, mais c'est vrai que pour un noob en js, le nom de la fonction peux porté à confusion..

concernant le arobase dans le nom d'utilisateur, lool , ouais un groupe sur facebook si tu veux !! mais c'est pour ça que je t ai laissé le "loisir" de la tester dans toute les situation, t'as regexp, hé là , tu me contredira pas que c'ets la galère!! ;)

Pour le phone, et la date , si tu le dit !! , j 'irais pas vérifié, mais , je voulais juste savoir ou tu en étais :)

sinon , veux quand même appuyer sur le faite que tes regexp, devrais être des constantes, même si elle mette 0.1 millisecondes a être évalue, c'est juste un problème de méthodologie, ...

voilà , voilà chacun à sa façon de parler, mais il dois toujours pouvoirs écouter les autres :)

bye!
labotemplates Messages postés 17 Date d'inscription vendredi 13 mars 2009 Statut Membre Dernière intervention 3 décembre 2009
21 oct. 2009 à 22:48
- Pas faux pour le boolean sur test() si on se contente d'un boolean. Le ternaire ici permet d'appeler autre chose selon l'utilisation voulue.
- Pour le pattern sur le mail, je m'appuie simplement sur les RFC qui permettent beaucoup plus de choses que le pattern que tu proposes, même si habituellement utilisé :) En théorie, nous serions en droit d'avoir un arobase dans le nom d'utilisateur, par exemple. C'est idiot mais pourtant vrai. On créé un groupe militant sur Facebook ?
- Pour hasOwnProperty, je n'ai pas de souci de compatibilité (IE6+, Safari, Chrome, Firefox et Opéra). Peux tu m'en dire plus sur les browsers qui n'acceptent pas ?
- Pour la regexp sur le trim, tu as raison, mais moi aussi ! na. Ayant mis le code en catégorie débutant, ça serait bien qu'un débutant comprenne le code à minima, donc découpage...
- Pour le phone, la regexp s'appuie sur les normes internationales (voir UIT)
- la date est un contrôle de date franco-française de type dd/mm/yyyy. C'est la regexp ou la fonction qui posent un problème de compréhension ?

J'ai oublié quelque chose d'autre ?
Merci pour ces remarques constructives en tout cas même si les habitudes de codage ne sont pas les mêmes pour tout le monde. C'est comme l'orthographe ça... :)
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
21 oct. 2009 à 22:01
salut labotemplates.
y'a destruc qui me plaise pas tros dans ton code, tout le test dans ta fonction tu utilise 'hasOwnProperty' qui n 'est pas supporté par tout les browser, de plus cette fonction contrairement à l'opérateur 'in', recherche si la propriété existe dans ton objet initiale, et nous dans les sous chaine de prototype. Du coup a moin de lui passé une instance dérivant de plusieurs classe, elle n'a pas beaucoup d'utilité.
Toujours dans la même fonction tu utilises une syntaxe courte comme test conditionnelle, hors cette syntaxe oblige à spécifier le 'else', dans ton cas tu renvoie false, à undefined ...c'est pas très propre, le mieux aurait été de fair un if classique ou alors:
'obj[property] = obj[property] || extension[property]'

Sinon tes rexexp devrait etre des constantes hors tu les initialise à chaque appel, le mieux aurait été de mettre ses constance dans une fonction anonyme , renvoyant l 'objet à étendre:
(function(){
TRIMREG= /^[^\s]+/g;
return {
trim : function(){
bou de code utilisant TRIMREG
}
}
})()

Sinon de mémoire la fonction test renvoie un boolean, donc il sert à rien de enregistrer le test pour retourner en fonction d'une condition un bool correspondant au test

ta regexp de l'émail semble simpliste , surtout le ^.+, mais je te laisse tester , pour ma part j'utilise cette reg trouvé sur le net ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$

ton expreg trim pourrait être plus simple : /^\s+|\s+$/g

je comprend pas tas regexp phone , ni date ...

c'est a peut prêt tout , bonne continuation !!
Rejoignez-nous