0. 들어가며

전에 <모던 자바스크립트 Deep Dive> 를 읽으며 정규 표현식을 접하긴 했지만 외우진 않았다. 여러모로 쓰일 일이 많아 외워두려고 한다.

1. 자주 사용하는 메타 문자

표현식 의미
^X 문자열이 X로 시작됨을 의미
X$ 문자열이 X로 끝남을 의미
. 임의의 한 문자를 의미
X* 문자 X가 0번 이상 반복됨을 의미
X+ 문자 X가 1번 이상 반복됨을 의미
X? 문자 X가 존재할 수도, 존재하지 않을 수도 있음을 의미
X|Y 문자 X 또는 Y 가 존재함을 의미
(X) 문자 X를 정규표현식 그룹으로 처리함을 의미
X{n} 문자 X가 n번 반복됨을 의미
X{n,} 문자 X가 n번 이상 반복됨을 의미
X{n,m} 문자 X가 n번 이상, m번 이하 반복됨을 의미
[XY] 문자 X 또는 문자 Y 중 하나임을 의미
[^X] 문자 X를 제외한 문자를 의미
[A-Z] A 부터 Z까지 문자를 의미 (범위)

2. 자주 사용하는 문자 클래스

표기법 의미
\d 숫자 [0-9]
\D 숫자가 아닌 것 [^0-9]
\s 공백 문자 [\t\n\r\f\v]
\S 공백 문자가 아닌 것
\w 문자 + 숫자 + 밑줄(_) [a-zA-Z0-9_]
\W 문자 + 숫자 + 밑줄(_) 이 아닌 것

3. 자주 사용하는 Flag

Flag 의미
g Global 의 표현하며 대상 문자열내에 모든 패턴들을 검색하는 것을 의미한다.
i Ignore case 를 표현하며 대상 문자열에 대해서 대/소문자를 식별하지 않는 것을 의미한다.
m Multi line을 표현하며 대상 문자열이 다중 라인의 문자열인 경우에도 검색하는 것을 의미한다.

4. 간단한 예시 - 집 전화번호

  1. 우리 나라의 지역 번호는 다음과 같다.
    • 02, 031, 032, 033, 041, 042, 043, 044, 051, 052, 053, 054, 055, 061, 062, 063, 064
  2. 이를 정규 표현식으로 나타내면 다음과 같다.

    0(2|(3[1-3])|(4[1-4])|(5[1-5])|(6[1-4]))-[0-9]{3}-[0-9]{4}
    

    img

5. 알고리즘 문제 풀이 (프로그래머스)

  1. 문자열 다루기 기본 (LV 1)
  2. 핸드폰 번호 가리기 (LV 1)