본문 바로가기
개발이야기/C#

[C#] System.Text.RegularExpressions.Regex를 사용하여 비밀번호 작성 규칙 구현하기

by S코델리아2 2024. 7. 10.
728x90
반응형

비밀번호는 보안을 위해 특정한 규칙이 필요하다.

예를 들면 대/소문자, 숫자, 특수문자 포함과 같은

각 요구사항을 충족시켜야 한다.

개발자 입장에서는 이러한 요구사항에 따르도록

비밀번호 체크를 해줘야 한다.

직접 함수를 만들어 쓸 수도 있지만

정규 표현식을 이용하여 문자열 패턴을 검사할 수도 있다.

그것이 바로 'System.Text.RegularExpressions.Regex' 클래스이다.

 

System.Text.RegularExpressions.Regex
using System.Text.RegularExpressions;

public class PasswordValidator
{
    public bool ValidatePassword(string password)
    {
        Regex regexSpecialChar = null;  //특수문자
        Regex regexNumber = null;       //숫자
        Regex regexAlphbetUpper = null; //대문자
        Regex regexAlphbetLower = null; //소문자
        
        //비밀번호는 최소 8자 이상, 영문 대소문자, 숫자, 특수문자 중 최소 1개 이상 포함
        //string strPatternSC = @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$";        

        //특수문자 체크
        string strPatternSC = @"[!@#$%^&*()_+=\[{\]};:<>|./?,-]";
        regexSpecialChar = new Regex(strPatternSC);
        bool CheckPWSC = regexSpecialChar.IsMatch(password);

        //숫자 체크
        string strPatternNB = @"[0-9]+";
        regexNumber = new Regex(strPatternNB);
        bool CheckPWNB = regexNumber.IsMatch(password);

        //알파벳 대문자 체크
        string strPatternAU = @"[A-Z]+";
        regexAlphbetUpper = new Regex(strPatternAU);
        bool CheckPWAU = regexAlphbetUpper.IsMatch(password);

        //알파벳 소문자 체크
        string strPatternAL = @"[a-z]+";
        regexAlphbetLower = new Regex(strPatternAL);
        bool CheckPWAL = regexAlphbetUpper.IsMatch(password);

        //조건에 하나라도 통과못하면..
        if (!CheckPWSC || !CheckPWNB || !CheckPWAU || !CheckPWAL)
        {
            MessageBox.Show("비밀번호를 영어 대/소문자, 숫자, 특수문자가 포함되어야 합니다. ");
        }
    }
}

 

예제와 같이 작성하면

알파벳 대/소문자 체크, 숫자 체크, 특수문자 등을 체크하여

모든 조건이 만족했을 경우 통과하게 된다.

물론 예제를 위해 분리하여 따로 체크하였지만

string strPatternSC = @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$";

와 같이 한 번에 체크를 해도 된다.

그리고 IsMatch 함수를 통하여 결괏값이 반환된다.

상황에 맞게끔 적용하자~!

728x90
반응형