Validation을 위해 작성하였던 정규 표현식 뜯어보기
개요
- 본 글은 넷플릭스 팀 프로젝트 서버 파트를 개발하면서 정규식을 공부한 내용을 담고 있다.
- 정규식을 떠올리면 늘 드는 생각은, 복사 & 붙여넣기의 사용과 겉핥기 수준, 예를 들면 괄호 안에 문자가 여러개 있으면 ‘또는’ 이라는 매칭 조건을 주는 것 외에는 아는게 없었기에 언젠가 공부해야겠다는 생각 뿐이였다.
- 이번 팀 프로젝트에서 유효성 검사를 위해 필요했던 정규식에 한해서 어떻게 동작하는지 한 땀 한 땀 분석해 보았다.
- 이제는 아래의 정규식 정도면 직접 작성할 수 있지 않을까?
- 이번 팀 프로젝트가 끝난 후에도 직접 작성을 자주 해서 보다 숙달됬으면 하는 바램이다.
-
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
과 같은 부분의 글자수다.
-
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개의 숫자와 매칭
-
password
^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{8,}$
(?=.*
: 바로 뒤에 있는 것을 매칭, 바로 뒤에 있는 것은 포함되지 않음A-Za-z
: 영대문자 또는 영소문자*\\d
: 숫자와 매칭[@$!%*#?&]
: @ 또는 …. & (모두 적용)A-Za-z\\d@$!%*#?&
: 영대문자 또는 영소문자 또는 하나의 특수문자{8,}
: 8글자 이상
-
play time (소숫점으로 나타내는 재생 기록) (
[0-9]{2,3})(\\.[0-9]{1,2})?
[0-9]{2,3}
: 숫자가 2개 이상 3개 이하 (정수부, 십~백의 자리 사이의 숫자가 가능)(\\.[0-9]{1,2})?
:.
포함, 숫자가 1개 이상 2개 이하(소숫점 아래 숫자)