ユーザー名正規表現パターン

^[a-z0-9__-]{3,15}$

説明

^                    # 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

全体の組み合わせは、小文字、数字、特殊記号 “__-“のみを使用して、3〜15文字を意味します。これは、さまざまなウェブサイトで広く使用されている一般的なユーザー名パターンです。

1. Javaの正規表現の例

UsernameValidator.java

package com.mkyong.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.一致するユーザー名:

{空} 1。 mkyong34 2. mkyong2002 3. mkyong-2002 4. mk3-4__yong

3.一致しないユーザー名:

{空} 1。 mkong( “@”文字は許可されていません)3. mkyong123456789__-(長すぎる、最大15文字)

ユニットテスト – UsernameValidator

testNGを使用して単体テストを実行する。

UsernameValidatorTest.java

package com.mkyong.regex;

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

    private UsernameValidator usernameValidator;

    @BeforeClass
        public void initData(){
        usernameValidator = new UsernameValidator();
        }

    @DataProvider
    public Object[][]ValidUsernameProvider() {
        return new Object[][]{
           {new String[]{
                 "mkyong34", "mkyong__2002","mkyong-2002" ,"mk3-4__yong"
           }}
                };
    }

    @DataProvider
    public Object[][]InvalidUsernameProvider() {
        return new Object[][]{
           {new String[]{
             "mk","mk@yong","mkyong123456789__-"
           }}
            };
    }

    @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.ユニットテスト – 結果

Username is valid : mkyong34 , true
Username is valid : mkyong__2002 , true
Username is valid : mkyong-2002 , true
Username is valid : mk3-4__yong , true
username is valid : mk , false
username is valid : mk@yong , false
username is valid : mkyong123456789__- , false
PASSED: ValidUsernameTest([Ljava.lang.String;@1d4c61c)
PASSED: InValidUsernameTest([Ljava.lang.String;@116471f)

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


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