So überprüfen Sie das Passwort mit regulären Ausdrücken

Muster für reguläre Ausdrücke für Passwörter

((?=.** \d)(?=.** [a-z])(?=.** [A-Z])(?=.** [@#$%]).{6,20})

Beschreibung

(           # Start of group
  (?=.** \d)      #   must contains one digit from 0-9
  (?=.** [a-z])       #   must contains one lowercase characters
  (?=.** [A-Z])       #   must contains one uppercase characters
  (?=.** [@#$%])      #   must contains one special symbols in the list "@#$%"
              .     #     match anything with previous condition checking
                {6,20}  #        length at least 6 characters and maximum of 20
)           # End of group

__? = - bedeutet die Assertionsbedingung anwenden, die für sich selbst bedeutungslos ist, immer mit einer anderen Kombination arbeiten.

Die gesamte Kombination besteht aus einer Zeichenfolge von 6 bis 20 Zeichen mit mindestens einer Ziffer, einem Großbuchstaben, einem Kleinbuchstaben und einem Sonderzeichen ("@ # $%"). Dieses Muster für reguläre Ausdrücke ist sehr nützlich, um ein starkes und komplexes Kennwort zu implementieren.

P.S Die Reihenfolge der Gruppierungsformel spielt keine Rolle .

1. Regelmäßiger Java-Ausdruck

PasswordValidator.java

package com.mkyong.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PasswordValidator{

      private Pattern pattern;
      private Matcher matcher;

      private static final String PASSWORD__PATTERN =
              "((?=.** \\d)(?=.** [a-z])(?=.** [A-Z])(?=.** [@#$%]).{6,20})";

      public PasswordValidator(){
          pattern = Pattern.compile(PASSWORD__PATTERN);
      }

     /** **
       **  Validate password with regular expression
       **  @param password password for validation
       **  @return true valid password, false invalid password
       ** /      public boolean validate(final String password){

          matcher = pattern.matcher(password);
          return matcher.matches();

      }
}

2. Passendes Passwort:

{leer} 1. mkyong1A @ 2. mkYOn12 $

3. Passwort stimmt nicht überein:

{leer} 1. mY1A @, zu kurz, mindestens 6 Zeichen + 2. mkyong12 @, es sind Großbuchstaben + 3 erforderlich. Kleinbuchstaben sind erforderlich

4. Unit Test - PasswordValidator

Unit-Test mit TestNG .

PasswordValidatorTest.java

package com.mkyong.regex;

import org.testng.Assert;
import org.testng.annotations.** ;
 /** **
 **  Password validator Testing
 **  @author mkyong
 **
 ** /public class PasswordValidatorTest {

    private PasswordValidator passwordValidator;

    @BeforeClass
        public void initData(){
        passwordValidator = new PasswordValidator();
        }

    @DataProvider
    public Object[][]ValidPasswordProvider() {
        return new Object[][]{
           {new String[]{
               "mkyong1A@", "mkYOn12$",
           }}
            };
    }

    @DataProvider
    public Object[][]InvalidPasswordProvider() {
        return new Object[][]{
           {new String[]{
               "mY1A@","mkyong12@","mkyoNg12** ",
                            "mkyonG$$","MKYONG12$"
           }}
           };
    }

    @Test(dataProvider = "ValidPasswordProvider")
    public void ValidPasswordTest(String[]password) {

       for(String temp : password){
        boolean valid = passwordValidator.validate(temp);
        System.out.println("Password is valid : " + temp + " , " + valid);
        Assert.assertEquals(true, valid);
       }

    }

    @Test(dataProvider = "InvalidPasswordProvider",
                 dependsOnMethods="ValidPasswordTest")
    public void InValidPasswordTest(String[]password) {

       for(String temp : password){
        boolean valid = passwordValidator.validate(temp);
        System.out.println("Password is valid : " + temp + " , " + valid);
        Assert.assertEquals(false, valid);
       }
    }
}

5. Unit Test - Ergebnis

Password is valid : mkyong1A@ , true
Password is valid : mkYOn12$ , true
Password is valid : mY1A@ , false
Password is valid : mkyong12@ , false
Password is valid : mkyoNg12**  , false
Password is valid : mkyonG$$ , false
Password is valid : MKYONG12$ , false
PASSED: ValidPasswordTest([Ljava.lang.String;@1d4c61c)
PASSED: InValidPasswordTest([Ljava.lang.String;@116471f)

===============================================
    com.mkyong.regex.PasswordValidatorTest
    Tests run: 2, Failures: 0, Skips: 0
===============================================


===============================================
mkyong
Total tests run: 2, Failures: 0, Skips: 0
===============================================

Link://Tag/Passwort/[Passwort]Link://Tag/Regex/[Regex]