Regular Expression (정규표현식)
- 정규 표현식은 "특정 패턴의 문자열"을 찾기 위한 표현 방식 (형식 언어, formal language라고 함)
- 정규 표현식을 이용하면, 특정 패턴에 매칭되는 문자열을 쉽게 찾아낼 수 있음
정규표현식 사용법
정규표현식 형식
- /패턴/플래그
┌ 슬래시(/) "사이"에는 매칭시킬 "패턴"을 써줌
└ 슬래시(/) "다음"에는 옵션을 설정하는 "플래그"를 써줌
└ 플래그는 하나만 찾을지, 모두 다 찾을지 등을 설정하는 옵션
정규표현식 매칭 패턴(문자, 숫자, 기호 등)
아래 매칭 패턴을 사용하면, 훨씬 쉽게 문자/숫자/기호를 표현할 수 있음
패턴 | 의미 |
a-zA-Z | 영어알파벳(-으로 범위 지정) |
ㄱ-ㅎ가-힣 | 한글 문자(-으로 범위 지정) |
0-9 | 숫자(-으로 범위 지정) |
. | 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두! 단, 줄바꿈 X) |
\d | 숫자 |
\D | 숫자가 아닌 것 |
\w | 영어 알파벳, 숫자, 언더스코어(_) |
\W | \w가 아닌 것 |
\s | space 공백 |
\S | space 공백이 아닌 것 |
\특수기호 | 특수기호 |
정규표현식 검색 패턴
아래 패턴들을 이용하면, AND, OR, StartWith, EndWith 등의 다양한 조합을 만들 수 있음
기호 | 의미 |
| | OR |
[] | 괄호안의 문자들 중 하나 |
[^문자] | 괄호안의 문자를 제외한 것 |
^문자열 | 특정 문자열로 시작(괄호 없음 주의!) |
문자열$ | 특정 문자열로 끝남 |
() | 그룹 검색 및 분류(match 메서드에서 그룹별로 묶어줌 |
(?: 패턴) | 그룹 검색(분류 X) |
\b | 단어의 처음/끝 |
\B | 단어의 처음/끝이 아님 |
정규표현식 갯수(수량) 패턴
특정 패턴이 몇번 반복되는지도 필터링 가능
기호 | 의미 |
? | 최대 한번(없음 || 한개) |
* | 없거나 있거나 (없음 || 있음): 여러개 포함 |
+ | 최소 한개(한개 || 여러개) |
{n} | n개 |
{Min,} | 최소 Min개 이상 |
{Min, Max} | 최소 Min개 이상, 최대 Max개 이하 |
정규표현식 플래그
플래그는 동시에 여러개 사용할 수도 있음 ex) gi, gm 등
플래그 | 의미 |
g | Global: 모든 문자 검색(안 쓰면 매칭되는 첫 문자만 검색) |
i | Ignore Case: 대소문자 구분 안함 |
m | Multi line: 여러 행의 문자열에 대해 검색 |
정규표현식 주요 메서드
자바스크립트 코드 상에서는 아래 메서드를 통해 패턴을 검사하고, .매칭되는 문자열을 추출, 변환함
메서드 | 의미 |
("문자열").match(/정규표현식/플래그) | "문자열"에서 "정규표현식"에 매칭되는 항목들을 배열로 반환 |
("문자열").replace(/정규표현식/, "대체문자열") | "정규표현식"에 매칭되는 항목을 "대체문자열"로 변환 |
("문자열").split(정규표현식) | "문자열"을 "정규표현식"에 매칭되는 항목으로 쪼개어 배열로 반환 |
(정규표현식).test("문자열") | "문자열"이 "정규표현식"과 매칭되면 true, 아니면 false 반환 |
(정규표현식).exec("문자열") | match메서드와 유사(단, 무조건 첫번째 매칭 결과만 반환) |
정규표현식 활용 샘플 코드
ⓐ 웹사이트 주소 정규표현식
/https?:\/\/[\w\-\.]+/g
⑴ http → 로 시작하고,
⑵ s? → 다음에 s는 없거나 있고,
⑶ : → 다음에 : 가 오고,
⑷ \/\/ → 다음에 특수기호 //가 오고
⑸ [\w\-\.]+ → \w(영문자, 언더스코어), 하이픈, 쩜으로 이루어진 문자열이 한개 이상(+) 있음
⑹ g → 매칭되는걸 모두 다 찾음 (플래그)
ⓑ 전화번호 정규표현식
/\d{2, 3}-\d{3, 4}-\d{4}/g
⑴ \d{2, 3} → 숫자 2~3개로 시작하고,
⑵ \- → 다음에 하이픈(-)이 오고,
⑶ \d{3, 4} → 다음에 숫자가 3~4개 오고,
⑷ \- → 다음에 하이픈(-)이 오고,
⑸ \d{4} → 다음에 숫자가 4개 옴
⑹ g → 매칭되는걸 모두 다 찾음 (플래그)
ⓒ 특수기호 정규표현식
모든 특수기호를 나열
/\[\]\{\}\/\(\)\.\?\<\>!@#$%^&*/g
문자와 숫자가 아닌것을 매칭
/[^a-zA-Z0-9가-힣ㄱ-ㅎ]/g
'React > 2022-上' 카테고리의 다른 글
권한 분기 (0) | 2022.04.18 |
---|---|
Cookie, Session, Local Storage (0) | 2022.04.18 |
React 상태관리 - Context api, redux, mobx, swr (0) | 2022.04.17 |
Throttling & Debouncing (0) | 2022.04.11 |
Object.keys, values, entries, assign (0) | 2022.04.11 |