Java/기본

[Java / 기본] 정규식

2024. 12. 24. 15:28

정규식 (Regex = Regular Expression)

문자열 형식을 검사하는 정해진 패턴 방식

기본 기호

`.` 임의의 문자
`^` 문자열 시작
`$` 문자열 끝

 

문자 클래스

`[]` 범위 지정
`-` 범위 생략

 

수량자

`*` 0번 이상 반복
`+` 1번 이상 반복
`?` 0번 또는 1번 반복
`{n}` 앞의 패턴을 n번 반복
`{n,m}` 앞의 패턴을 n에서 m번 반복
`{n,}` 앞의 패턴을 n번 이상 반복

 

기타 메타 문자

`|` ~ 중 하나
`()` 캡쳐 그룹
`(?:...)` 비캡쳐 그룹 - 검사는 하지만, 결과를 참조하거나 추출 불가

 

기본 특수 문자

`\` 이스케이프 문자

 

후행 탐색

`(?=...)` 긍정 탐색 (Positive Lookahead) - 해당 패턴 뒤에 오는 문자열 반드시 포함
`(?!...)` 부정 탐색 (Negative Lookahead) - 해당 패턴 뒤에 오는 문자열 반드시 제외

 

최소 반복 (non-greedy match)

`.*?` 문자 0개 이상을 최소한으로 반복해서 매칭

정규식 예제

전화번호 검사

String phone = "01012345678";
String regex = "^010[1-9][0-9]{7}$";

System.out.println(phone.matches(regex));

 

아이디 검사

String id = "testuser1";
String regex = "^[a-z][a-z0-9\\-_]{4,19}$";

System.out.println(id.matches(regex));

 

닉네임 검사

String nickname = "테스트운영자";
String regex = "^(?!.*?운영자)[가-힣][가-힣0-9]{1,9}$";

System.out.println(nickname.matches(regex));

 

생년월일 검사

String birth = "2001-02-29";
String yearValue = birth.substring(0, 4);
int year = Integer.parseInt(yearValue);
boolean leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;

String regex;
if(leap)
    regex = "^(19[0-9]{2}|20[0-9]{2})-((02-(0[1-9]|1[0-9]|2[0-9]))|((0[469]|11)-(0[1-9]|1[0-9]|2[0-9]|30))|((0[13578]|1[02])-(0[1-9]|1[0-9]|2[0-9]|3[01])))$";
else
    regex = "^(19[0-9]{2}|20[0-9]{2})-((02-(0[1-9]|1[0-9]|2[0-8]))|((0[469]|11)-(0[1-9]|1[0-9]|2[0-9]|30))|((0[13578]|1[02])-(0[1-9]|1[0-9]|2[0-9]|3[01])))$";

System.out.println(birth.matches(regex));

 

비밀번호 검사

String password = "Testuser1!";
String regex = "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#$])[A-Za-z0-9!@#$]{8,16}$";

System.out.println(password.matches(regex));

유용한 사이트

https://regexper.com/

 

Regexper

 

regexper.com

 

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

'Java > 기본' 카테고리의 다른 글

[Java / 기본] 예외 처리  (0) 2024.12.25
[Java / 기본] Wrapper  (0) 2024.12.25
[Java / 기본] 문자열  (1) 2024.12.24
[Java / 기본] 문자  (6) 2024.12.23
[Java / 기본] Object  (1) 2024.12.23
'Java/기본' 카테고리의 다른 글
  • [Java / 기본] 예외 처리
  • [Java / 기본] Wrapper
  • [Java / 기본] 문자열
  • [Java / 기본] 문자
개발하는 벌꿀오소리
개발하는 벌꿀오소리
겁없는 벌꿀오소리처럼 끊임없이 도전하자!
  • 글쓰기 관리
  • 개발하는 벌꿀오소리
    벌꿀오소리의 개발 노트
    개발하는 벌꿀오소리
  • 전체
    오늘
    어제
    • 분류 전체보기 (74)
      • Java (60)
        • 기본 (23)
        • 모듈 (8)
        • 자료구조 (5)
        • 알고리즘 (0)
        • 파일 입출력 (5)
        • JDBC (5)
        • Spring Boot (14)
      • Oracle (13)
      • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 공지사항

  • hELLO· Designed By정상우.v4.10.3
개발하는 벌꿀오소리
[Java / 기본] 정규식
상단으로

티스토리툴바