Javascript expression reguliere

Fermé
ponpon - 17 févr. 2006 à 15:00
 moa - 26 juin 2008 à 10:24
Bonjour
J'aimerai savoir comment faire pour vérifier si une adresse mac est correctement saisie, j'ai reussi pour un IP mais pas pour une adresse mac help please :

function verifmac2()
{

var taChaine = Feuille.iptv.value ;
var regexp = /\b([[a-fA-F][0-9]]{1,3}\:){6}\b/ ;
if (taChaine.match(regexp))
MAC() ;
else
{alert("MAC non valide") ; exit();}

en gros que je rentre une adresse mac valide ou non ca me dit mac invalide lol
MERCI D'AVANCE

22 réponses

StreM Messages postés 515 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 28 février 2007 124
17 févr. 2006 à 15:21
Ah lala !
Un peu de logique ;-))
Déja, il faudrait une adresse de ce type d'après ton expression :
6F:8F:FF:ED:8D:56:
Avec ":" a la fin.
Ensuite, si tu veux mettre les chiffres, c'est ca :
[a-fA-F0-9] et pas [[a-fA-F][0-9]]
Donc un truc qui marcherait, c'est ca :
/([a-fA-F0-9]{1,3}\:){5}([a-fA-F0-9]{1,3})/

Mais une adresse MAC a forcément 2 chiffres, non ?
Alors tu devrais mettre {2}, mais bon, tu fais comme tu veux

0
Je suis debutant en prog lol
Merci pour l'info j'ai reussi a faire ma verif de saisie mais pour info il n'y a pas : apres la fin de l'@mac.
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
17 févr. 2006 à 16:44
pour info il n'y a pas : apres la fin de l'@mac.
c'est bien ce qu'il te dit ...
Déja, il faudrait une adresse de ce type d'après ton expression :
6F:8F:FF:ED:8D:56:
Avec ":" a la fin.

mais pas de soushi ;P
0
Autre petite chose comment on fait pour vérifier la saisie d'un mail . J'ai trouvé ca sur le net mais ca ne fonctionne pas apparament :


^[a-zA-Z0-9._%-]+@[neuf]+\.[fr]$
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
18 févr. 2006 à 10:06
Salut,

à la fin de ton regex ^[a-zA-Z0-9._%-]+@[neuf]+\.[fr]$ on voit

[fr]$ qui veut dire : correspondre à un caractère énumeré dans la classe [fr] (normalement tu as besoin de f suit d'un r et pas seulement de f ou r, dont tlu peux écrire [fr]{2,} par exemple ) qui se trouve en fin de ligne $

Posibilités :

^[a-zA-Z0-9._%-]+@[neuf]+\.[fr] - pas logique tant que tu as besoin de reconnaître f suit d'un r($ est enlevé mai en ce cas tu vas reconnaître une addrese ponpon@neuf.ffffff est ce n'est pas ça qu'on veut)

^[a-zA-Z0-9._%-]+@[neuf]+\.[fr]{2,}$

pourquoi se limiter à neuf (en fait on lit n suit de e suit de u suit de f ) ?

^[a-zA-Z0-9._%-]+@[a-zA-Z]+\.[fr]$

et pareil pourquoi seulement f suit d'un r

[a-z]{2,} au lieu de [fr]{2,}

Quand on utilise un regex il faut savoir ce qu'on cherche et le contexte dans le quel on trouve ce qu'on cherche pour mieux adapter le regex.

Il faut lire un peut la documentation pour comprendre les métacaractères, les classes de caractères, les quantificateurs,...

Par exemple une façon de voir les choses.
Prenons le cas d'une classe de caractères complementé.

[^aeiou]
- on peux la lire : correspondre à tout caractère non enumeré
- ou : ne pas correspondre aux caractères enumeré

D'après toi la quelle version on choisi?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
18 févr. 2006 à 10:26
Tu peux toujour utiliser

au lieu de [a-zA-Z0-9_] le raccourci \w

au lieu de [0-9] le raccourci \d

\W est l'opposé de \w
\D est l'opposé de \d
0
Merci beaucoup je fais tester tout cela
et je veux juste neuf car je taff pour neuf donc il faut que je filtre les adresses ;-)
0
function verifmailsaisie()
{
if(document.Feuille.mail.value.match
(^[a-zA-Z0-9._%-]+@[neuf]+\.[fr]{2,}$)
{
mail ();
}
else


{alert("mail invalide");
exit();}
}

Ca ne fonctionne pas
0
(/^[a-zA-Z0-9-]+@[neuf]+\.[fr]{2}$/)

Ca ca fonctionne mais par contre si je rentre neufff ca lance aussi le test lol

Est ce qu'il y a moyen de dire juste neuf ?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
18 févr. 2006 à 13:21
Salut,

[neuf] c'est une classe de caractères qui reconnaît un des caractères
n ou e ou u ou f

si tu mets [neuf]+ ça veut dire que nnnneeuufff et aussi reconnu.
+ c'est un quantificateur qui veut dire une fois ou plusieurs fois que tu veux (il ne faut pas oublié la gourmandise des quantificateurs - enfin je travaille en Perl avec le regex, je n'ai pas étudier encore le cas de java)

Donc [neuf]+ veut dire n ou e ou u ou f une fois ou plusieurs fois.
Et comme + et gourmandes alors jusqu'à @ il va trouver une infinité des combinaison de n au moins une fois ou combiens des fois tu veux, e......


si tu as besoin seulement de neuf alors mets neuf et pas [neuf]+

en fait si tu as besoin que de neuf.fr tu mets neuf\.fr
0
La j'ai mis ca :

/^[a-zA-Z0-9-]+@[neuf]\.fr$/

ou ca :

/^[a-zA-Z0-9-]+@neuf\.fr$/

Ca ne fonctionne pas raa.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
18 févr. 2006 à 13:37
Chez moi ( et avec perl) ça fonctionne :
/^[a-zA-Z0-9-]+\@neuf\.fr$/ 
0
MERCI !!!!!!!!!!!!!!!!!!!!!!
MERCI !!!!!!!!!!!!!!!!!!!!!!
MERCI !!!!!!!!!!!!!!!!!!!!!!
MERCI !!!!!!!!!!!!!!!!!!!!!!
MERCI !!!!!!!!!!!!!!!!!!!!!!
MERCI !!!!!!!!!!!!!!!!!!!!!!

j'ai trop galéré ca MARCHE !!
0
ou encore :
(/^[a-zA-Z0-9-]+@[neuf]\.[fr]$/)

et ca me sort mail invalide
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
18 févr. 2006 à 13:42
Affiche le regex et aussi la chaine sur laquelle tu testes ton regex
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
18 févr. 2006 à 13:43
0
J'ai pas accès au net juste a ccm
0
function verifmail()
{
if(document.Feuille.mail.value.match
(/^[a-zA-Z0-9-]+\@neuf\.fr$/) || (/^[a-zA-Z0-9-]+\@neufpnp$/))

{
mail();
}
else

{alert("Mail non valide");
exit();}
}

Ca ne me fait plus les tests et si je crée deux fonctions distinc il y en a une qui passe et pas l'autre normal ...
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
18 févr. 2006 à 14:03
J'ai mis \@ puisque dans Perl @ est utiliser pour les tableau donc si je mets @neuf perl leve une exception, donc j'ai utiliser \@neuf dans mon expressions régulière.

Donc j'ai tester le regex de mon message 12 et ça va.
Tu peux afficher quelques examples de chaine sur lequelles tu testes?
0
ponpon17430@neuf.fr
ponpon17430@neufpnp

((/^[a-zA-Z0-9-]+\@neuf\.fr$/) || (/^[a-zA-Z0-9-]+\@neufpnp$/))

j'ai fais un ou comme ca mais ca ne marche pas non plus le neuf.fr il passe mais pas le neufpnp
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
18 févr. 2006 à 14:24
Salut,

ce n'est pas vraiment bien ce que tu veux

((/^[a-zA-Z0-9-]+\@neuf\.fr$/) || (/^[a-zA-Z0-9-]+\@neufpnp$/))

si tu mets

((/^[a-zA-Z0-9-]+\@neufpnp$/) || (/^[a-zA-Z0-9-]+\@neuf\.fr$/))

alors c'est ponpon17430@neufpnp qui passe ( || veut dire ou ) donc si 1ère expression est vraie alors on s'arrête là.

Tu peux utiliser /^[a-zA-Z0-9._%-]+\@neuf(\.fr|pnp)$/
pour reconnaître :
ponpon17430@neuf.fr
ponpon17430@neufpnp
0
Encore merci tout fonctionne nikel
Tu es client chez 9T ?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
18 févr. 2006 à 14:33
Non, je suis chez free.

Gardez ces 2 liens pour tester tes regex (pour plus tard je parle), ça pourra servir.

http://www.aidejavascript.com/article146.html
http://www.annuaire-info.com/expression-reguliere.html
0
Derniere petite chose est ce que tu sais comment lire le contenu d'une page web genre j'ai une page ou se trouve un numéro de tel et j'aimerai pouvoir le recuperer automatiquement grace a une fonction
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
18 févr. 2006 à 14:52
C'est possible bien sûr, et je sais le faire (pour repondre à ta question).
En revanche il faut savoir comment il est écrit le numéro de téléphone dans la page web que tu cherches.

C'est bien de savoir la structure de fichier quand on utilise le regex. Bien sûr on peut imaginer plusieurs façon de chercher, mais quand on sait la structure de fichier c'est plus facile.

Par exemple un numéro avec la forme tel. 01 22 22 22 22 se trouvant dans une page web blabla.html

tu peux le récuperer avec egrep (sous linux) tout simplement
[lamitest@localhost corbeille]$ egrep -o 'tel\. 0[0-9] ([0-9][0-9]\s?){4}' test_mail_regex.pl
tel. 01 22 22 22 22
[lamitest@localhost corbeille]$
Bon le test et fait sur un fichier texte mais un fichier html est un fichier texte.
0