0. 정규 표현식 (RegEx - regular expression)
- 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식언어이다.
https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D
- 간단하게 예를 들면 회원가입시 ID(영문 + 숫자, 5~20자리) 형식에 맞춰 기입됬는지 체크할때 사용됨
1. 정규 표현식 문법
1). 메타문자 ( \ ^ $ . | [ ] ( ) * + ? { } )
- 정규 표현식에서 사용되는 기호
- 특별한 의미(특정 기능)를 가짐
앵커 (anchor) - 문자열의 위치 - 특정 용도 |
^ (특정 위치 고정) | 행의 처음 | ||||
$ (특정 위치 고정) | 행의 끝 | |||||
\ (특정 용도) | 특정 문자와 결합하여 새로운 기능을 가짐 |
1-1). \ (특정 위치 혹은 특정 용도)
- \ 와 특정 문자가 결합되어 특정한 기능을 가진다
- 대문자와 소문자의 기능이 다르니 주의
- 해당 정규식과 일치, 혹은 일치하지 않는 경우를 지정하여 사용
\A | 문자열의 처음 줄 구분이 없을 경우 ^ 와 같은 기능 |
\Z | 문자열의 끝 줄 구분이 없을 경우 $ 와 같은 기능 |
\b (word boundary) | 특정 위치의 문자 |
\B | 특정 위치를 제외한 나머지 문자 |
\d (digit) | 숫자 ( = 문자열에 숫자 O) [0-9] 와 같은 기능 |
\D (non digit) | 숫자가 존재하지 않음 ( = 문자열에 숫자 X) |
\t (tab) | 탭(tab)을의미 |
\s (space) | 공백문자를 의미 |
\S (non space) | 공백문자가 없음을 의미 |
\w (word) | 알파벳, 숫자, _ 중의 한 문자를 의미 |
\W (non word) | 알파벳, 숫자, _ 중의 한 문자가 아님을 의미 |
2). 수량자 ( *, +, ?, { } )
- 1개 이상의 문자들의 반복 범위를 지정할때 사용됨
{n} | n번 반복시 일치 |
{n,} | n번 이상 반복시 일치 |
{n,m} | n번 에서 m번 안으로 반복시 일치 |
* | (= {0}) 0번 이상 반복시 일치 - 쉽게 설명하면 'ABC' 문자열을 A ~ C 까지 1번 체크(반복 X) |
+ | (= {1,}) 1번 이상 반복시 일치 - 쉽게 설명하면 'ABC' 문자열을 A ~ C 까지 2번 체크(반복 1회) |
? | (= {0,1}) 패턴이 일치하지 않거나 1번만 반복시 일치 |
3). 패턴 변경자 ( g, i, m, s )
- 검사 위치 및 범위를 수정해줌
g (global) | 전역 검색 |
i (ignore case) | 대소문자 구분 안함 |
m (multi line) | 문자열에 줄 바꿈이 있을 경우, 여러 줄을 인식 (줄바꿈 없을 경우 한 문장으로 인식) 일치 대상이 다른 줄에 위치해도 검색 가능 |
s (single line, dotall) | 임의의 한 문자 검색 |
x | r공백 문자 무시 주의) 이 변경자를 지원하지 않는 엔진이 많다. |
2. 정규 표현식 예제
1). ^[0-9]*$: 숫자
- ^ ~ $ : 검사하려는 문자열의 처음부터 끝까지 검사
- [ ] : 검사 하려는 패턴
- * : 검사 하려는 범위 안을 최소 1번 이상, 0번 반복
2). ^[a-zA-Z]*$: 영문자 (소, 대)
3). ^[가-힣]*$: 현대 한글(유니코드를 지원하는 정규식 엔진에 한정)
4). ^[ㄱ-ㅎㅏ-ㅣ가-힣]*$: 한글 자모 낱자를 포함한 모든 현대 한글
5). ^\d{3}-\d{3,4}-\d{4}$: 휴대전화 연락처
- \d{3}: {3} 개의 문자가 숫자임을 의미, {3 또는 4} 개의 문자가 숫자임을 의미
'프로그래밍 기초 > 기초문법' 카테고리의 다른 글
컴파일(Compile), 빌드(Build), 배포(Deploy), CI/CD (0) | 2023.08.08 |
---|---|
배열, 객체, 유사 배열 객체, Array.from, map (0) | 2023.08.04 |
Async, Await (0) | 2023.04.13 |
스레드, 프로세스, 멀티 태스킹 (0) | 2023.04.13 |
Node.js (0) | 2023.03.20 |