Programming && WEB && APP

프로그래밍 – 정규표현식

테스트 사이트 : https://regexr.com/

정규표현식이란?

특정 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어


Character classes

종류 범위 예시
. 모든 문자
\w, \d, \s (영문 대소문자+숫자+_),
숫자,
공백
\W, \D, \S (영문 대소문자+숫자+_)가 아닌 문자,
숫자가 아닌 문자,
공백이 아닌 문자
[abc] [] 안의 문자만 허용 조건 : [abc]
abcde
[^abc] [] 안의 문자를 제외하고 허용 조건 : [^abc]
abcde
[a-g] [] 안의 허용될 문자의 범위 조건 : [b-d]
abcdefgh

Anchors

종류 범위 예시
^, $ (줄 단위) 문자의 시작, 끝에 해당하는 경우 조건 : ^abc
1, abcd
2. bcd -> not find

조건 : efg$
1. abcdefg
2. abcdef -> not find
\b (단어 단위) 문자의 시작에 해당하는 경우 조건 : \babc
abcdefg abcdasd bcdasd
/B (단어 단위) 문자의 끝에 해당하는 경우 조건 : \Befg
abcdefg bcdefg bcdef

Escaped characters

종류 범위 예시
\. \* \\ . * \ 특수문자 검사를 위해선 앞에 \ (백슬래시)를 추가 조건 : \\n
hello\n welcome to world\n

Groups & Lookaround

종류 범위 예시
(abc) () 안의 문자열 그룹핑 (캡처 o)
(?:abc) () 안의 문자열 그룹핑 (캡처 x) 조건 : ab(?:b)
abcdefg
abbcdefg
abbbbcdefg
(?=abc) () 안의 문자열 그룹핑(캡처 x) 된 문자열 선택 해제 [ 전방 탐색 ] 조건 : ab(?=b)
abcdefg -> not find
abbcdefg
abbbbcdefg
(?!abc) 위 조건에 해당되지 않는 경우 조건 : ab(?!b)
abcdefg
abbcdefg -> not find
abbbbcdefg -> not find

Quantifiers & Alternation

종류 범위 예시
문자*, 문자+, 문자? 해당 문자는
0개이상의 문자,
1개이상의 문자,
0 또는 1개의 문자
조건 : ab*c
1. acdefg
2. abcdefg
3. abbcdefg

조건 : ab+c
1. acdefg -> not find
2. abcdefg
3. abbcdefg

조건 : ab?c
1. acdefg
2. abcdefg
3. abbcdefg -> not find
문자{최대} 문자{최소,최대} 해당 문자는 최소~최대까지 반복됨을 의미 조건 : b{3}
abbcdefg -> not find
abbbbcdefg
ab|cd ab 또는 cd의 문자 선택 조건 : ab|cd
acdefg
abcdefg
abbcdefg

응용

  • 이메일 검사
^[\w-]+@[0-9a-zA-Z-]+(\.|$)[0-9a-zA-Z-.]+$
  • 생년월일 검사
^\d{4}\/(0[1-9]|1[0-2])\/(0[1-9]|1[0-9]|2[0-9]|3[0-1])
  • 전화번호 검사
\d{2,3}-\d{3,4}-\d{4}

댓글 한 개

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.