Password Regular Expression Pattern
((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})
Description
( # 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
?= – means apply the assertion condition, meaningless by itself, always work with other combination
Whole combination is means, 6 to 20 characters string with at least one digit, one upper case letter, one lower case letter and one special symbol (“@#$%”). This regular expression pattern is very useful to implement a strong and complex password.
P.S The grouping formula order is doesn’t matter.
1. Java Regular Expression Example
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. Password that match:
1. mkyong1A@
2. mkYOn12$
3. Password that doesn’t match:
1. mY1A@ , too short, minimum 6 characters
2. mkyong12@ , uppercase characters is required
3. mkyoNg12* , special symbol “*” is not allow here
4. mkyonG$$, digit is required
5. MKYONG12$ , lower case character is required
4. Unit Test – PasswordValidator
Unit test with TestNG.
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 – Result
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
===============================================
Pingback: xmdxuyf8x4c5ygniwx4dyf4wcn5gxtdf()
Pingback: xm85cws8txym3845ncnwsxsf4s()
Pingback: zwtxk85wyt4zsefx4mtgergfer()
Pingback: s4k5jtwy48dcngg5mxdrtdncrt()
Pingback: x2m5ttttt55dsywzfwmx34rx34()
Pingback: cn7v5jdncgsdjkx4m9c5nyecen()
Pingback: z3c33mxcwnte5dtgeurws0gfff()
Pingback: c8n75s5tsndxcrsfsfcscjkfsk()
Pingback: ccn2785xdnwdc5bwedsj4wsndb()
Pingback: http://webkingz.camkingz.com/()
Pingback: read more()
Pingback: water ionizer()
Pingback: alkaline water()
Pingback: electricity()
Pingback: pay plan()
Pingback: paypal loans()
Pingback: pay day loans()