본문 바로가기
프로그래밍/Java

[Java/자바/자바의 정석] 정규표현식을 활용한 비밀번호 허용 여부 체크하는 법

by Mr.noobiest 2023. 12. 30.

 

Java 정규표현식

 

 

 

특정 조건을 만족하는 비밀번호인지 검증하는 Java 코드

 

보통 회원가입이나 로그인할때, 입력하는 비밀번호가 정해진 형태를 만족하는지 체크하는 경우가 많다.

예를 들어 대문자와 특수문자는 무조건 1개 이상 들어가야 한다던지, 아이디와 같은 비밀번호를 입력해서는 안된다던지, 하는 조건들을 검증하는 것이다.

 

추가로 비밀번호 뿐만 아니라, 이메일에서도 사용될 수 있는데, 이메일 형태인지를 검증하는 경우도 지정할 수 있다.

ex) xxxxx@xxxxx.xxx 와 같은 형태를 만족해야 한다/ 라는 조건을 충족하는지 확인할 수 있다.

회원가입 폼에 위와 같이 사용자의 입력이 올바른 값인지 검증하는 코드

 


 

 

비밀번호 조건 만족여부 검증 자바 코드

 

조건 : 숫자 1개, 대소문자 1개씩, 최소길이는 5 이상이여야 한다.

private static boolean checkPassword(String s) {
        boolean result = false;
        
        //정규표현식 숫자최소1개,대소문자 최소1개,최소길이5이상
        String regExp = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{5,}$";
        
        //System.out.println("s 정규표현식 적용 결과 ==> "+s.matches(regExp));
        result=s.matches(regExp);
        return result;
}

public static void main(String[] args) {
        System.out.println(checkPassword("8eqq") == true);
        System.out.println(checkPassword("8eqqQ") == true);
        System.out.println(checkPassword("password1") == true);
        System.out.println(checkPassword("Password1") == true);

 

실행결과

false
true
false
true

 

 


 

이메일인지 검증하는 Java 코드

 

조건

 

  1. 이메일 주소의 첫 부분은 하나 이상의 문자, 숫자 또는 하이픈이있어야 한다.
  2. 점(.)과 그 뒤에 하나 이상의 문자, 숫자 또는 하이픈이 올 수 있는데, 이 패턴이 0번 이상 반복될 수 있다.
  3. 1,2 다음에는 @ 기호가 있어야 한다.
  4. @ 뒤에는 하나 이상의 문자, 숫자 또는 하이픈이 있어야 한다.
  5. 4 이후 점(.)과 그 뒤에 하나 이상의 문자, 숫자 또는 하이픈이 올 수 있는데, 이 패턴이 0번 이상 반복될 수 있다.
  6. 이메일 주소의 마지막 부분은 점(.)과 그 뒤에 두 개 이상의 알파벳이 있어야 한다.

 

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

public class Main {
    public static void checkEmail(String email) {
        String regex = "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)*(\\.[a-zA-Z]{2,})$";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(email);

        if(matcher.find()) {
            System.out.println(email + "은 유효한 이메일 주소입니다.");
        } else {
            System.out.println(email + "은 유효하지 않은 이메일 주소입니다.");
        }
    }

    public static void main(String[] args) {
        checkEmail("example@example.com"); 
        checkEmail("example.example@example.com"); 
        checkEmail("example@com"); 
        checkEmail("example@@example.com"); 
    }
}

 

실행결과

유효한 이메일
유효한 이메일
유효하지 않은 이메일 (도메인 부분이 불완전합니다)
유효하지 않은 이메일 (@가 중복되었습니다)
728x90
반응형