Javascript expression reguliere [Fermé]

Signaler
-
 moa -
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

Messages postés
519
Date d'inscription
lundi 18 octobre 2004
Statut
Membre
Dernière intervention
28 février 2007
121
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

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.
Zep3k!GnO
Messages postés
2027
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
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
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]$
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 442
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?
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 442
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
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 ;-)
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
(/^[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 ?
lami20j
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 442
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
La j'ai mis ca :

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

ou ca :

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

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

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

et ca me sort mail invalide
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 442
Affiche le regex et aussi la chaine sur laquelle tu testes ton regex
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 442
J'ai pas accès au net juste a ccm
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 ...
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 442
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?
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
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 442
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
Encore merci tout fonctionne nikel
Tu es client chez 9T ?
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 442
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
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
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 442
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.
1 2