Rad Blog

Archive

Validation을 위해 작성하였던 정규 표현식 뜯어보기

2022-04-02 Java Regex xfrnk2

개요

  • 본 글은 넷플릭스 팀 프로젝트 서버 파트를 개발하면서 정규식을 공부한 내용을 담고 있다.
  • 정규식을 떠올리면 늘 드는 생각은, 복사 & 붙여넣기의 사용과 겉핥기 수준, 예를 들면 괄호 안에 문자가 여러개 있으면 ‘또는’ 이라는 매칭 조건을 주는 것 외에는 아는게 없었기에 언젠가 공부해야겠다는 생각 뿐이였다.
  • 이번 팀 프로젝트에서 유효성 검사를 위해 필요했던 정규식에 한해서 어떻게 동작하는지 한 땀 한 땀 분석해 보았다.
  • 이제는 아래의 정규식 정도면 직접 작성할 수 있지 않을까?
  • 이번 팀 프로젝트가 끝난 후에도 직접 작성을 자주 해서 보다 숙달됬으면 하는 바램이다.

image

  1. email ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$

    • [A-Z0-9._%+-]: A-Z 또는 0-9 또는 . 또는 _ % 또는 + 또는 -
    • @ : @포함
    • [A-Z0-9.-] : 첫번째 항목과 동일
    • \. : .과 완전히 일치하는 문자를 매칭
    • [A-Z] : 영문 대문자 (또는)
    • {2,6} : 직전 문자가 2개 이상 6개 이하이다. 즉 이메일 주소의 .net이나 .net과 같은 부분의 글자수다.
  2. phone number ^01(?:0|1|[6-9])-(?:\\d{3}|\\d{4})-\\d{4}$

    • 01 : 01로 시작
    • 0|1|[6-9] : 0 또는 1 또는 6-9와 매칭
    • - : - 포함
    • \\d{3}|\\d{4} : 3개의 숫자 또는 4개의 숫자와 매칭
    • \\d{4} : 4개의 숫자와 매칭
  3. password ^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{8,}$

    • (?=.* : 바로 뒤에 있는 것을 매칭, 바로 뒤에 있는 것은 포함되지 않음
    • A-Za-z : 영대문자 또는 영소문자
    • *\\d : 숫자와 매칭
    • [@$!%*#?&] : @ 또는 …. & (모두 적용)
    • A-Za-z\\d@$!%*#?& : 영대문자 또는 영소문자 또는 하나의 특수문자
    • {8,} : 8글자 이상
  4. play time (소숫점으로 나타내는 재생 기록) ([0-9]{2,3})(\\.[0-9]{1,2})?

    • [0-9]{2,3} : 숫자가 2개 이상 3개 이하 (정수부, 십~백의 자리 사이의 숫자가 가능)
    • (\\.[0-9]{1,2})?: .포함, 숫자가 1개 이상 2개 이하(소숫점 아래 숫자)
comments powered by Disqus