정규표현식
07 Oct 2024정규 표현식(Regular Expression, regex라고 많이 사용)은 문자열에서 특정 패턴을 검색하거나 대체, 추출할 때 사용되는 문자열의 규칙을 정의하는 언어다.
정규 표현식을 사용하면 텍스트에서 특정한 조건을 만족하는 부분을 찾거나, 그 부분을 변경하는 작업을 쉽게 할 수 있다.
기본 구성 요소
- 리터럴 문자: 그냥 문자열 그대로 찾고자 할 때 사용됨
- 예: “abc”는 “abc”라는 문자열을 찾는다.
- 메타문자: 특별한 의미를 가진 문자들이다.
- .: 임의의 한 문자 (개행 문자 제외)
- ^: 문자열의 시작
- $: 문자열의 끝
- []: 문자 클래스, 대괄호 안에 있는 문자 중 하나를 찾음
-
: OR 연산자, 두 패턴 중 하나를 찾음 - () : 그룹화, 하위 패턴을 그룹으로 묶음
- 수량자: 반복을 나타내는 문자
- *: 0번 이상 반복
- +: 1번 이상 반복
- ?: 0번 또는 1번
- {n}: 정확히 n번 반복
- {n,}: n번 이상 반복
- {n,m}: n번 이상 m번 이하 반복
- 이스케이프 문자: 메타문자를 문자 그대로 사용하고 싶을 때 사용
- 예: .은 마침표를 의미하며, \은 백슬래시를 의미
- 문자 클래스: 특정 범위의 문자들을 지정할 수 있습니다.
- \d: 숫자와 동일 (0-9)
- \D: 숫자가 아닌 문자
- \w: 알파벳, 숫자, 밑줄(_)과 일치
- \W: 알파벳, 숫자, 밑줄이 아닌 문자
- \s: 공백 문자 (스페이스, 탭, 개행 등)
- \S: 공백 문자가 아닌 문자
예시
이메일 검증 정규식
-
정규식 : ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$
- ^[a-zA-Z0-9._%+-]+ : 알파벳, 숫자, 점, 밑줄, 퍼센트, 더하기, 빼기 등이 1개 이상 나옴
- @ : 반드시 ‘@’ 기호가 있음
- [a-zA-Z0-9.-]+ : 알파벳, 숫자, 점, 하이픈 등이 1개 이상 나옴
- . : 반드시 ‘.’이 나옴
- [a-zA-Z]{2,}$ : 알파벳이 2개 이상 나옴, 문자열 끝
전화번호 형식 검증
- 정규식 : ^(01[016789])-\d{3,4}-\d{4}$
- ^\d{3} : 숫자 3개로 시작
- ”-“ : 하이픈
- \d{3,4} : 숫자 3개 또는 4개
- ”-“ : 또 다른 하이픈
- \d{4}$ : 숫자 4개로 끝
자바에서 정규 표현식 사용하기
자바에서 정규 표현식을 사용하려면 Pattern 클래스와 Matcher 클래스를 사용하면 된다.
Spring validation에서 정규 표현식 사용하기
필드가 정해진 정규 표현식에 만족하게 하려면 @Pattern 어노테이션을 사용한다.
email 형식을 검증하는 @Email 어노테이션을 사용해도 된다.