Comment valider le nom d'utilisateur avec une expression régulière
Modèle d'expression régulière du nom d'utilisateur
^[a-z0-9_-]{3,15}$
La description
^ # Start of the line [a-z0-9_-] # Match characters and symbols in the list, a-z, 0-9, underscore, hyphen {3,15} # Length at least 3 characters and maximum length of 15 $ # End of the line
Toute combinaison est des moyennes, 3 à 15 caractères avec n'importe quel caractère minuscule, chiffre ou symbole spécial «_-» uniquement. Il s'agit d'un modèle de nom d'utilisateur courant qui est largement utilisé sur différents sites Web.
1. Exemple d'expression régulière Java
UsernameValidator.java
package com.example.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class UsernameValidator{ private Pattern pattern; private Matcher matcher; private static final String USERNAME_PATTERN = "^[a-z0-9_-]{3,15}$"; public UsernameValidator(){ pattern = Pattern.compile(USERNAME_PATTERN); } /** * Validate username with regular expression * @param username username for validation * @return true valid username, false invalid username */ public boolean validate(final String username){ matcher = pattern.matcher(username); return matcher.matches(); } }
2. Nom d'utilisateur correspondant:
1. example34
2. exemple_2002
3. exemple-2002
4. mk3-4_yong
3. Nom d'utilisateur qui ne correspond pas:
1. mk (trop court, 3 caractères minimum)
2. mk @ yong (le caractère «@» n'est pas autorisé)
3. exemple123456789_- (trop long, 15 caractères maximum)
4. Test unitaire - Nom d'utilisateurValidateur
Utilisation de testNG pour effectuer un test unitaire.
UsernameValidatorTest.java
package com.example.regex; import org.testng.Assert; import org.testng.annotations.*; /** * Username validator Testing * @author example * */ public class UsernameValidatorTest { private UsernameValidator usernameValidator; @BeforeClass public void initData(){ usernameValidator = new UsernameValidator(); } @DataProvider public Object[][] ValidUsernameProvider() { return new Object[][]{ {new String[] { "example34", "example_2002","example-2002" ,"mk3-4_yong" }} }; } @DataProvider public Object[][] InvalidUsernameProvider() { return new Object[][]{ {new String[] { "mk","mk@yong","example123456789_-" }} }; } @Test(dataProvider = "ValidUsernameProvider") public void ValidUsernameTest(String[] Username) { for(String temp : Username){ boolean valid = usernameValidator.validate(temp); System.out.println("Username is valid : " + temp + " , " + valid); Assert.assertEquals(true, valid); } } @Test(dataProvider = "InvalidUsernameProvider", dependsOnMethods="ValidUsernameTest") public void InValidUsernameTest(String[] Username) { for(String temp : Username){ boolean valid = usernameValidator.validate(temp); System.out.println("username is valid : " + temp + " , " + valid); Assert.assertEquals(false, valid); } } }
5. Test unitaire - Résultat
Username is valid : example34 , true Username is valid : example_2002 , true Username is valid : example-2002 , true Username is valid : mk3-4_yong , true username is valid : mk , false username is valid : mk@yong , false username is valid : example123456789_- , false PASSED: ValidUsernameTest([Ljava.lang.String;@1d4c61c) PASSED: InValidUsernameTest([Ljava.lang.String;@116471f) =============================================== com.example.regex.UsernameValidatorTest Tests run: 2, Failures: 0, Skips: 0 =============================================== =============================================== example Total tests run: 2, Failures: 0, Skips: 0 ===============================================