자바 정규 표현식을 활용한 입력 유효성 검증

정규 표현식 기반 입력 검증

사용자 입력 유효성 검증은 정규 표현식을 활용해 효율적으로 처리할 수 있습니다. 다양한 검증 요구사항에 대응하는 유틸리티 클래스를 설계해 보겠습니다.

import java.util.regex.*;

public class RegexValidator {
    
    // 유니코드 한글 검증
    public static boolean isValidKorean(String input) {
        return matchesPattern(input, "[\\uAC00-\\uD7A3]+");
    }
    
    // 영문 대소문자 검증
    public static boolean isValidAlphabet(String input) {
        return matchesPattern(input, "[A-Za-z]+");
    }
    
    // 숫자 검증 (최소/최대 길이 지정 가능)
    public static boolean isValidNumeric(String input, Integer minLen, Integer maxLen) {
        String pattern = (minLen != null && maxLen != null) ? 
            "\\d{" + minLen + "," + maxLen + "}" : "\\d+";
        return matchesPattern(input, pattern);
    }
    
    // 이메일 형식 검증
    public static boolean isValidEmail(String input) {
        return matchesPattern(input, "\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}");
    }
    
    // 시간 형식(hh:mm:ss) 검증
    public static boolean isValidTime(String input) {
        return matchesPattern(input, "([01]?\\d|2[0-3]):[0-5]?\\d:[0-5]?\\d");
    }
    
    // IP 주소 형식 검증
    public static boolean isValidIP(String input) {
        String octet = "(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)";
        return matchesPattern(input, octet + "\\." + octet + "\\." + octet + "\\." + octet);
    }
    
    // 공통 패턴 매칭 메서드
    private static boolean matchesPattern(String input, String regex) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        return matcher.matches();
    }
}

검증 메서드 사용 예시

메서드 설명 사용 예
isValidKorean() 한글 문자열 검증 RegexValidator.isValidKorean("한글테스트")
isValidNumeric() 숫자 형식 및 길이 검증 RegexValidator.isValidNumeric("12345", 4, 6)
isValidEmail() 이메일 형식 검증 RegexValidator.isValidEmail("test@example.com")
isValidTime() 시간 형식 검증 RegexValidator.isValidTime("23:59:59")

확장 검증 패턴

// 특수 문자 포함 여부 검증
public static boolean containsSpecialChars(String input) {
    return !matchesPattern(input, "[a-zA-Z0-9\\uAC00-\\uD7A3]+");
}

// 비밀번호 복잡성 검증 (영문 시작 + 숫자/언더스코어)
public static boolean isValidPassword(String input, int min, int max) {
    return matchesPattern(input, "[a-zA-Z]\\w{" + (min-1) + "," + max + "}");
}

태그: java 정규표현식 입력유효성검사 Pattern Matcher

5월 30일 20:42에 게시됨