✅ 정규표현식이란?
사전적 의미로는 특정 규칙을 가진 문자열의 집합을 표현하는데 사용하는 언어 형식이다. 정규식(Regular Expression)은 문자열에서 특정 내용을 찾거나 대체 또는 설정하는데 사용된다.
대표적으로 최근 진행하고 있는 웹페이지에서 회원가입 폼에서 아이디는 영문 또는 한글 8자 이상을 입력하라는 화면을 본 적이 있을 것이다. 간단한 코드인 만큼 처음에는 표현식이 익숙하지는 않은 것 같다.
👉 정규식 연습 사이트 바로가기: https://regexr.com/
반복문과 조건문을 사용하면 엄청 길어질 코드를 정규표현식을 이용하면 매우 간단하게 표현할 수 있다.
📌 많은 양의 데이터를 형식에 맞게 데이터를 추출해야 할 때
📌 사용자가 입력한 아이디, 비밀번호, 휴대폰번호, 이메일 등이 올바른지 검증하고 싶을 때(유효성 검사)
📌 코드에서 해당 변수의 이름을 포함하고 있는 함수는 제외하고 싶을 때
📌 문자열에 포함된 공백이나 특수문자를 제거하고 싶을 때
👉 정규표현식에서는 주석이나 공백을 허용하지 않기에 가독성이 좋지 않다.
✅ 정규표현식 문자
정규표현식의 모든 문자는 메타 문자와 정규문자로 나뉜다.
📝 메타문자는 약속문자로써 예를들면, 물음표(?)는 '앞의 문자가 있어도 되고 없어도 된다.'라는 의미이다.
📝 정규문자는 약속된 의미없이 문자 그대로 사용되는 문자이다. 예를들면, 정규 문자 'a'는 단어 'a' 하나에 매치된다
메타문자
메타문자 | 설명 |
. | 1개의 문자와 일치한다. 단일행 모드에서는 새 줄 문자를 제외한다. |
[] | '['과 ']' 사이의 문자 중 '하나'를 선택한다. '-' 기호와 함께 스면 범위를 지정할 수 있다. |
[^] | 문자 클래스 안의 문자를 제외한 나머지를 선택한다. (^와 구분) |
^ | 문자열이나 행의 처음을 의미 |
$ | 문자열이나 행의 끝을 의미 |
() | 여러식을 묶을 수 있다. 'abc|adv'는 'a(b|d)c'와 같은 의미 |
\n | 일치하는 패턴들 중 n번째를 선택하며, 여기에서 n은 1에서 9중 하나가 올 수 있다. |
* | 0개 이상의 문자를 포함한다. |
{min, max} | 최소 min개 이상, 최대 max개 이하 |
{min, } | 최소 min개 이상 |
+ | 문자 최소 1번 이상 |
? | 문자 0번 또는 1번 |
정규문자 - 역슬래시(\)를 이용함(메타 문자와 활용 가능)
\문자 | 의미 | 설명 |
\w | 문자/숫자 | 문자 또는 숫자와 매치 |
\W | 문자/숫자 부정 | 문자와 숫자가 아닌 특수 문자와 매치 |
\d | 숫자 | 0부터 9까지의 숫자와 매치. [0-9]와 동일 |
\D | 숫자 부정 | 숫자가 아닌 것(문자와 특수 문자)과 매치 |
\s | whitespace | 공백, 띄어쓰기(whitespace)와 매치 |
\S | whitespace 부정 | whitespace가 아닌 문자와 매치 |
✅ 정규표현식 메서드
메서드 | 의미 |
('문자열').match(/정규표현식/플래그(📌참고)) | '문자열'에서 '정규표현식'에 매칭되는 항목들을 배열로 반환 |
('문자열').replace(/정규표현식/, '대체문자열') | '정규표현식'에 매칭되는 항목을 '대체문자열'로 변호나 |
('문자열').split(정규표현식) | '문자열'을 '정규표현식'에 매칭되는 항목으로 쪼개어 배열로 반환 |
('정규표현식').test('문자열') | '문자열'이 '정규표현식'과 매칭되면 true, 아니면 false |
(' 정규표현식 ').exec('문자열') | match 메서드와 유사(단, 무조건 첫번째 매칭 결과만 반환) |
📌플래그(flag): 정규식 플래그는 정규식을 생성할 때 고급 검색을 위한 전역 옵션을 설정할 수 있도록 지원하는 기능
📝 정규식 플래그
플래그 | 의미 | 설명 |
i | Ignore Case | 대소문자 구별없이 검색 |
g | Global | 문자열 내의 모든 패턴을 검색 |
m | Multi Line | 문자열의 행이 바뀌더라도 검색을 계속 |
s | .(모든 문자 정규식)이 개행문자 \n도 포함 | |
u | Unicode | 유니코드 전체를 지원 |
y | sticky | 문자 내 특정 위치에서 검색을 진행하는 'sticky' 모드를 활성화 |
g: 전역 검색
- 전역 검색 플래그가 없는 경우 최초 검색 결과 한번만 반환
- 전역 검색 플래그 있는 경우 모든 검색 결과를 배열로 반환
m: 줄바꿈 검색
- 여러 줄의 문자열에서 필터링 해야 될 때 사용
- 입력 시작(^) 앵커나 입력 종료($) 앵커는 전체 문자열이 아닌 각 줄 별로 대응 되게 만들어졌기 때문에, 여러줄에 검색해야 한다면 m플래그를 사용하면 된다.
i: 대소문자 구분 없음
- 정규식은 기본적으로 대소문자를 구분(Case sensitive)
- 대신 i 플래그를 통해 대소문자 구분하지 않을 수 있다.
✅ 정규식 기호 모음
📝 정규식 특정 문자 숫자 매칭 패턴
패턴 | 의미 |
a-zA-Z | 영문자(-으로 범위 지정) |
ㄱ-ㅎ가-힣 | 한글 문자(-으로 범위 지정) |
0-9 | 숫자(-으로 범위 지정) |
. | 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두) 단, 줄바꿈 X |
'Language > JavaScript' 카테고리의 다른 글
[JavaScript] 객체 메소드 (0) | 2023.12.14 |
---|---|
[Javascript] LocalStorage (0) | 2023.12.06 |
브라우저 이벤트(Event) (0) | 2023.12.04 |
프로토타입(Prototype) (0) | 2023.09.09 |
Class(생성자 함수, 객체 생성 방식) (0) | 2023.09.02 |