Changsoon's Note Backend Developer

정규표현식

정규 표현식(Regular Expression, regex라고 많이 사용)은 문자열에서 특정 패턴을 검색하거나 대체, 추출할 때 사용되는 문자열의 규칙을 정의하는 언어다.

정규 표현식을 사용하면 텍스트에서 특정한 조건을 만족하는 부분을 찾거나, 그 부분을 변경하는 작업을 쉽게 할 수 있다.

기본 구성 요소

  1. 리터럴 문자: 그냥 문자열 그대로 찾고자 할 때 사용됨
    • 예: “abc”는 “abc”라는 문자열을 찾는다.
  2. 메타문자: 특별한 의미를 가진 문자들이다.
    • .: 임의의 한 문자 (개행 문자 제외)
    • ^: 문자열의 시작
    • $: 문자열의 끝
    • []: 문자 클래스, 대괄호 안에 있는 문자 중 하나를 찾음
    • : OR 연산자, 두 패턴 중 하나를 찾음
    • () : 그룹화, 하위 패턴을 그룹으로 묶음
  3. 수량자: 반복을 나타내는 문자
    • *: 0번 이상 반복
    • +: 1번 이상 반복
    • ?: 0번 또는 1번
    • {n}: 정확히 n번 반복
    • {n,}: n번 이상 반복
    • {n,m}: n번 이상 m번 이하 반복
  4. 이스케이프 문자: 메타문자를 문자 그대로 사용하고 싶을 때 사용
    • 예: .은 마침표를 의미하며, \은 백슬래시를 의미
  5. 문자 클래스: 특정 범위의 문자들을 지정할 수 있습니다.
    • \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 어노테이션을 사용해도 된다.