IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Besoin d'aide sur regexp javascript


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par d�faut Besoin d'aide sur regexp javascript
    Bonjour � tous,

    Voil�, je d�veloppe un site internet avec un peu de javascript et je bloque sur la v�rification de la complexit� du mot depasse lors de l'inscription.

    Voici le code que j'ai �crit :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function motdepasse()
    {
    	if (!document.register.motdepasse.value.match('[a-z]+[A-Z]+[0-9]+[^a-zA-Z0-9]+'))
    	{
    		document.getElementById('motdepasse').innerHTML = 'Votre mot de passe doit être compris entre 8 et 32 caractères, contenir une majuscule, une minuscule, un chiffre et un caractère non-alphanumérique.';
    	}
    	else
    	{
    		document.getElementById('motdepasse').innerHTML = '';
    	}
    }
    Ce code fonctionne il exige bien une minuscule, une majuscule, un chiffre et un caract�re non alphanum�rique, cependant je n'arrive pas � exiger une longueur minimum et maximum.

    Si je met :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    [a-z]+[A-Z]+[0-9]+[^a-zA-Z0-9]+{8,16}
    Ca ne fonctionne pas.

    Auriez-vous une id�e ?

    Merci � tous.
    Cordialement,

  2. #2
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    Ce code fonctionne il exige bien une minuscule, une majuscule, un chiffre et un caract�re non alphanum�rique, cependant je n'arrive pas � exiger une longueur minimum et maximum.
    heu non il exige au moins une minuscule suivi d'au moins une majuscule suivi d'au mois un num�rique suivi d'au moins un caract�re non alphanum�rique
    donc
    acfFGHYTR12356548%@ est valid� ...

    que souhaites tu autoriser exactement ?
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par d�faut
    En fait je souhaite :

    Autoriser une ou plusieurs minuscules, une ou plusieurs majuscules, un ou plusieurs chiffres et un ou plusieurs caract�res non alphanum�riques.

    Effectivement, je ne m'en �tait pas rendu compte mais il n'aurtorise qu'une majuscule suivie d'une minuscule suivie d'un chiffre suivi d'un caract�re non alphanum�rique.

    Cela vient du mot de passe avec le lequel je test, qui utilise exactement cet ordre la :S

    ^^

  4. #4
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     il n'aurtorise qu'une majuscule suivie d'une minuscule suivie d'un chiffre suivi d'un caractère non alphanumérique.
    Cel m'etonnerais fort !
    + => au moins un

    donc en gros pas de limitation sur les caract�res mais plutot sur le nombre entre 8 et 16 ?

    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par d�faut
    Bonjour SpaceFrog,

    En fait ce que je souhaite c'est exiger au moins une ou plusieurs minuscules, au moins une ou plusieurs majuscules, au moins un ou plusieurs chiffres et au moins un ou plusieurs caract�res non alphanum�riques et la chaine doit etre comprise entre 8 et 16 caract�res.

    Voil�, je n'avais pas bien expliqu�.

    Tu penses que ^\w{8,16}$ peux suffir ?

    Cordialement,

  6. #6
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    un peu plus de precisions sur non alphanum�rique ??
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par d�faut
    Caract�res du genre :

    &�~"#'{([-|�`_\�^�@)]�=}+�$���%*�!�:/;.,?<>�

    Je crois que je te les ai tous faits ^^ mdrr

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    '#(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])(?=\A.{8}\z)#'

    Je m'ai tromp�, au lieu de (?=\A.{8}\z) il faut (?=\A.{8,16}\z)#

  9. #9
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    /^[a-z0-9&é~"#'{(\[-|è`_\ç^à@)\]°=}+¨$£¤ù%*µ!§:/;.,?<>²]{8,16}$/i
    sinon vu qu'a priori tu n'interdit que l'espace ...

    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par d�faut
    Bien vu, SpaceFrog, pour le [^ ]



    Mais pour le reste je suis perplexe:

    hormis le fait que les majuscules sont oubli�es et que, d�finissant les non-alphanum�riques explicitement, il risque d�en �tre oubli�s,

    il y a surtout que si par exemple on d�finit �\A[a-z0-9+=@]{8,16}\z�, cela n�assure absolument pas qu�il y ait au moins un �+� par exemple:

    �ahgt=et@@923� passera le test puisque chacun de ses caract�res appartient � la classe [a-z0-9+=@]




    Donc j'en reste � ma proposition, en la corrigeant avec ton id�e de [^ ]:

    '#(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])(?=\A[^ ]{8,16}\z)#'

  11. #11
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    au moins un �+�
    HAaaaaa
    Au moins un de chaque ... cela m'avais echapp�
    A mon avis pas possible avec une seul regExp ...
    Ou alors vu qu'il faudra prendre en compte les diff�rentes combinaisons
    min maj non-alphanum
    maj min non alphanum
    min non-alphanum maj
    ...

    elle ferait 3km de long ^^

    donc une pour verifier les maj, une autre les min et une pour le non alpha et un test length
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  12. #12
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par d�faut
    A mon avis pas possible avec une seul regExp ...

    Ou alors vu qu'il faudra prendre en compte les diff�rentes combinaisons
    elle ferait 3km de long ^^

    Ben, la regex construite avec la RE que j�ai propos�e le fait.
    Je veux dire qu�elle r�agit comme voulu, pas qu�elle fait 3 km....

    Je viens de la tester. Vous m'excuserez, mais par fain�antise j�ai fait �a en Python:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import re
     
    RE = '(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])(?=\A[^ ]{8,16}\Z)'
    pat = re.compile(RE)
     
    while 1:
        ch = raw_input('Entrer une chaine de caracteres : ')
        if pat.search(ch):
            print len(ch),ch,'   OK'
        else:
            print len(ch),ch,'   PAS BON'
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Entrer une chaine de caracteres : gfre9087AGTEr$$>
    16 gfre9087AGTEr$$>    OK
    Entrer une chaine de caracteres : gfreXXXXAGTEr$$>
    16 gfreXXXXAGTEr$$>    PAS BON
    Entrer une chaine de caracteres : gfre9087****r$$>
    16 gfre9087****r$$>    PAS BON
    Entrer une chaine de caracteres : 8#8#9087AGTEr$$>
    16 8#8#9087AGTEr$$>    OK
    Entrer une chaine de caracteres : 8#8#9087AGTE~$$>
    16 8#8#9087AGTE~$$>    PAS BON
    Entrer une chaine de caracteres : aB9&&&+
    7 aB9&&&+    PAS BON
    Entrer une chaine de caracteres : aB9&&&+s
    8 aB9&&&+s    OK
    Entrer une chaine de caracteres : aB9&&&+s9
    9 aB9&&&+s9    OK
    Entrer une chaine de caracteres : aB9&&&+s9fertw
    14 aB9&&&+s9fertw    OK
    Entrer une chaine de caracteres : aB9&&&+s9fertw4@+
    17 aB9&&&+s9fertw4@+    PAS BON
    Entrer une chaine de caracteres : aB9&&&+s9fertw4@
    16 aB9&&&+s9fertw4@    OK
    Entrer une chaine de caracteres : aB9& &+s9fertw4@
    16 aB9& &+s9fertw4@    PAS BON
    Entrer une chaine de caracteres : $%#^&***()~<>
    13 $%#^&***()~<>    PAS BON
    Entrer une chaine de caracteres : $%#^&***()~<>w
    14 $%#^&***()~<>w    PAS BON
    Entrer une chaine de caracteres : $%#^&***()~<>w0
    15 $%#^&***()~<>w0    PAS BON
    Entrer une chaine de caracteres : $%#^&***()~<>w0Q
    16 $%#^&***()~<>w0Q    OK
    Entrer une chaine de caracteres : $%#^&***()~<>w0Q-
    17 $%#^&***()~<>w0Q-    PAS BON
    Entrer une chaine de caracteres :
    Tester les codes, �a aide.....

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par d�faut
    Bonjour eyquem,

    Je vois que vous avez �t� actifs tous les deux et je vous en remercie ^^

    Ma probl�matique s'inscrit dans l'�criture d'un code javascript dans une page php.

    Voici mon code dans lequel j'ai rajout� l'expression r�guli�re � laquelle vous �tes tous les deux arriv�s :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function motdepasse()
    {
    	if (!document.register.motdepasse.value.match('(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])(?=\A[^ ]{8,16}\Z)'))
    	{
    		document.getElementById('motdepasse').innerHTML = 'Votre mot de passe doit être compris entre 8 et 16 caractères, doit contenir au moins une majuscule, une minuscule, un chiffre et un caractère non-alphanumérique.';
    	}
    	else
    	{
    		document.getElementById('motdepasse').innerHTML = '';
    	}
    }

    Cependant, le message "Votre mot de passe doit �tre compris entre 8 et 16 caract�res, doit contenir au moins une majuscule, une minuscule, un chiffre et un caract�re non-alphanum�rique." s'affiche toujours, ce qui signifie qu'il y'a une erreur.

    Manifestement pas dans l'expression r�guli�re mais peut �tre dans mon code.

    Question subsidiaire :

    Est-ce que les expressions r�guli�res en javascript ont des particularit�es de syntaxe qui pourrait faire que ton expression r�guli�re ne marcherais pas dans mon code ?

    Cordialement,

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par d�faut
    Je ne connais pas JavaScript. Je ne pourrai donc pas vous aider au del� de ma RE.



    Juste une remarque:

    je ne vois pas comment est pass�e � la fonction la valeur de la cha�ne � tester.

    Est-ce � motdepasse.value � ?

    Ne devrait il pas y avoir passage d�argument ?

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par d�faut
    En fait, pour le motdepasse.value :
    - motdepasse correspond � un champ input text
    - et input � sa valeur

    Je test en fait la valeur du champ input par la fonction motdepasse() qui est appel�e � l'appui sur un bouton.

    J'ai l'impression qu'en javascript il doit y avoir des particularit�e concernant les regexp.

    La regexp que tu m'a donn�e correspond � quel language ?

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par d�faut
    Voil� ce que j'ai trouv�, ca va m'aider un peu ^^

    http://www.regular-expressions.info/...ptexample.html

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par d�faut
    (?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])

    celle-ci marche

    donc l'erreur est ici (?=\A[^ ]{8,16}\Z)

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par d�faut
    ((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])){8,}

    Celle-ci marche bien, donc l'erreur est sur la fin pour l'espace.

  19. #19
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    eyq, je ne vois pas comment ta reg peut prendre en consid�ration les differentes combinaisons, am mois que le but recherch� soit de respecter l'ordre minusucule maj non-alpha ...
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  20. #20
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par d�faut
    SpLiFFman, je dis �a sans m�chancet� mais si tu utilises des expressions r�guli�res en JavaScript, il serait bon que tu saches comment JavaScript utilise les expressions r�guli�res.

    Ton lien est int�ressant. Je connaissais ce site sur les regex mais pas sp�cialement quelle partie des possibilit�s des regex le JavaScript utilise. Donc j�ai cliqu� sur
    Learn how to use the JavaScript RegExp object.
    et je suis tomb� sur une page bien int�ressante dans laquelle je lis entre autres choses:

    - � Since forward slashes delimit the regular expression, ...
    c�est comme en PHP, il y a des d�limiteurs, mais ici ils sont obligatoirement des / si je comprends bien.
    Il faut donc les ajouter � ma RE

    - � No \A or \Z anchors to match the start or end of the string. Use a caret or dollar instead.
    Et paf, c�est exactement ce que j�ai utilis�. Les portions
    (?=.*[a-z])
    (?=.*[A-Z])
    (?=.*[0-9])
    (?=.*[^a-zA-Z0-9])

    fonctionnant ind�pendamment les unes des autres et ind�pendamment de (?=\A[^ ]{8,16}\Z) , je comprends pourquoi il n�y a que cette derni�re partie qui fait foirer et que �a marche si on l�enl�ve.



    Je suis d�sol� de n�avoir pas �t� plus attentif � ces points, d�autant que tu as avais bien senti le danger: �Est-ce que les expressions r�guli�res en javascript ont des particularit�es de syntaxe ...�







    Je m�aper�ois que les regex en JavaScript ont des possibilit�s tr�s limit�es:

    No \A or \Z anchors to match the start or end of the string. Use a caret or dollar instead.
    Lookbehind is not supported at all. Lookahead is fully supported.
    No atomic grouping or possessive quantifiers
    No Unicode support, except for matching single characters with \uFFFF
    No named capturing groups. Use numbered capturing groups instead.
    No mode modifiers to set matching options within the regular expression.
    No conditionals.
    No regular expression comments. Describe your regular expression with JavaScript // comments instead, outside the regular expression string.


    Lookbehind is not supported at all.
    Mais on a de la chance:
    Lookahead is fully supported.
    car les
    (?=.*[a-z])
    (?=.*[A-Z])
    (?=.*[0-9])
    (?=.*[^a-zA-Z0-9])

    sont justement des lookahead assertions.





    Enfin bref, je pense que ce devrait mieux marcher avec
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    if (!document.register.motdepasse.value.match('/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])^[^ ]{8,16}$/')
    Nota: j�ai enlev� la derni�re lookahaed assertion (?=...) autour de ^[^ ]{8,16}\$. C�est inutile, et m�me contradictoire, bien que �a marcherait quand m�me.










    Pour ce qui est du fonctionnement:



    il y a 5 portions
    (?=.*[a-z])
    (?=.*[A-Z])
    (?=.*[0-9])
    (?=.*[^a-zA-Z0-9])
    ^[^ ]{8,16}\$

    qui sp�cifient 5 imp�ratifs qui doivent �tre v�rifi�es par la cha�ne test�e:



    (?=.*[a-z]) dit :

    il faut explorer la cha�ne vers l�avant � partir de ce point et il faut trouver dans l�avanc�e d�abord n�importe quelle succession de caract�res avant de tomber ensuite sur un caract�re de la classe [a-z], la succession de caract�res quelconques (repr�sent�s par le m�tacaract�re point) pouvant �tre �ventuellement inexistante (dans le cas o� le premier caract�re est de la classe [a-z] )



    Mais une fois cette exigence v�rifi�e, le moteur de regex REVIENT � la position initiale d�o� il est parti: les assertions vers l�avant (aussi bien que celles vers l�arri�re dans d�autres langages) ne sont pas consommatrices, elles sont seulement exploratrices de la cha�ne � partir d�un point de d�part. Si vous voulez, c�est comme un toutou qui n�est autoris� � explorer qu�une certaine longueur au bout de sa laisse et qui est oblig� de revenir vers son ma�tre.
    Ouais bon... on trouve ce qu�on peut comme image....



    L�important �tant que lorsque la seconde assertion en avant est v�rifi�e, l�exploration se fait � partir du m�me point de d�part.

    Et rebelote, (?=.*[A-Z]) sp�cifie:

    il faut explorer la cha�ne vers l�avant � partir de ce point ...blablabli... avant de tomber ensuite sur un caract�re de la classe [A-Z], la succession ...bliblibla... pouvant �tre �ventuellement inexistante ...blabloublou...[A-Z] )




    Puis idem avec (?=.*[0-9]) ,

    la cha�ne est explor�e (avec retour) � partir du m�me point de d�part, pour trouver un chiffre quelque part vers l�avant.




    Et encore ensuite � partir du m�me point de d�part,
    avec (?=.*[^a-zA-Z0-9]) le moteur de regex cherche un caract�re non-alphanum�rique quelque part vers l�avant... et revient au point de d�part.





    Quel est ce point de d�part ?

    �tant donn� que toutes les assertions vers l�avant sont �crites devant ^[^ ]{8,16}\$ ,
    le point de d�part est situ� devant le premier caract�re sp�cifi� par ^[^ ]{8,16}\$

    Bon en l�occurence ^[^ ]{8,16}\$ commence au d�but de la cha�ne, donc les assertions vers l�avant ont leur point de d�part au d�but de la cha�ne.



    Et voil�.

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. Besoin d'aide sur une erreur javascript Uncaught Exception
    Par Jim_Nastiq dans le forum G�n�ral JavaScript
    R�ponses: 5
    Dernier message: 29/11/2007, 16h11
  2. [D7] Besoin d'aide sur un PChar
    Par bobby-b dans le forum Langage
    R�ponses: 6
    Dernier message: 30/06/2004, 16h42
  3. Filemaker ... besoin d'aide sur les Plugin
    Par joange dans le forum Autres SGBD
    R�ponses: 3
    Dernier message: 22/04/2004, 10h16
  4. [intermedia] besoin d'aide sur script PL/SQL
    Par SteelBox dans le forum PL/SQL
    R�ponses: 8
    Dernier message: 05/01/2004, 19h59
  5. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    R�ponses: 4
    Dernier message: 10/07/2003, 12h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo