VB.NET: Tester un mot de passe

Résolu/Fermé
Anonyme209 Messages postés 678 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 22 décembre 2020 - 12 nov. 2014 à 18:12
Anonyme209 Messages postés 678 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 22 décembre 2020 - 16 nov. 2014 à 13:43
Bonjour,

lors de la première ouverture du programme, l'utilisateur doit rentrer un mot de passe qui sera plus tard requis pour ré-ouvrir le programme.
Je voudrais tester ce mot de passe pour voir s'il il a les conditions suivantes:
-Il est compris entre 8 et 500 caractères.
-Il contient au moins une minuscule
-Il contient au moins une majuscule
-Il contient au moins un chiffre
(Il peut contenir n'importe quel autre caractère)

J'ai trouvé ce code:

   Dim maregex As New System.Text.RegularExpressions.Regex("^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)([\w]{8,500})$")
        If maregex.IsMatch(TextBox1.Text) Then
         'mot de passe valide
        Else
        'mot de passe invalide
        End If


Mais, comme
[\w]
l'indique, le mot de passe n'est plus valide s'il y a un autre caractère que les caractères alphanumériques.
J'ai essayé en remplaçant
([\w]{8,500})
par
{8,500}
, mais le mot de passe n'est maintenant jamais validé.

2 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
16 nov. 2014 à 11:53
Bonjour,

Voici une function paramétrable :
Nombre minimum et maximum de caractères du password
Nombre de minuscules et majuscules
Nombre de chiffres
Nombre de caractères spéciaux

 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        MsgBox("Votre mot de passe " & TextBox1.Text & " est: " & ValidatePassword(TextBox1.Text))
    End Sub
    Function ValidatePassword(ByVal pwd As String,
    Optional ByVal minLength As Integer = 8,
     Optional ByVal maxLength As Integer = 500,
    Optional ByVal numUpper As Integer = 2,
    Optional ByVal numLower As Integer = 2,
    Optional ByVal numNumbers As Integer = 2,
    Optional ByVal numSpecial As Integer = 2) As Boolean
       'a modifier suivant les besoins ci-dessus
        ' Replace [A-Z] with \p{Lu}, to allow for Unicode uppercase letters. 
        Dim upper As New System.Text.RegularExpressions.Regex("[A-Z]")
        Dim lower As New System.Text.RegularExpressions.Regex("[a-z]")
        Dim number As New System.Text.RegularExpressions.Regex("[0-9]")
        ' Special is "none of the above". 
        Dim special As New System.Text.RegularExpressions.Regex("[^a-zA-Z0-9]")

        ' Check the length. 
        If Len(pwd) < minLength Then Return False
        If Len(pwd) > maxLength Then Return False
        ' Check for minimum number of occurrences. 
        If upper.Matches(pwd).Count < numUpper Then Return False
        If lower.Matches(pwd).Count < numLower Then Return False
        If number.Matches(pwd).Count < numNumbers Then Return False
        If special.Matches(pwd).Count < numSpecial Then Return False

        ' Passed all checks. 
        Return True
    End Function

0
Anonyme209 Messages postés 678 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 22 décembre 2020 15
16 nov. 2014 à 13:43
Merci, ça marche.
0