https://inpa.tistory.com/entry/JS-📚-정규식-RegExp-누구나-이해하기-쉽게-정리

정의

문자열에서 특정 내용을 찾거나 대체 또는 발췌하는데 사용된다.

대표적으로 입력칸에 전화번호나 이메일을 입력하라고 했을 때 옳지 않은 값을 입력하면 정규표현식에 의해 필터링되어 걸러져 경고창을 띄운다.

이처럼 반복문과 조건문을 사용해야 할것같은 복잡한 코드도 정규표현식을 이용하면 매우 간단하게 표현할 수 있음

구성

/regexr/i

// 리터럴 방식
const regex = /abc/;

// 생성자 방식
const regex = new RegExp("abc");
const regex = new RegExp(/abc/); // 이렇게 해도 됨

/는 시작 /는 종료 regexr는 패턴 i는 flag로 정규식 플래그라는 것이다.

대부분의 언어의 정규식 문법은 비슷하니, 정규식을 잘 익혀두면 다른 언어의 정규식을 익히는데 아주 빠르게 학습이 가능

정규식 메서드

문자열.match(/정규표현식/플래그) 문자열에서 정규표현식으로 매칭되는 항목들을 배열로 전환
문자열.replace(/정규표현식/플래그, “대체 문자열”) 정규표현식에서 매칭되는 항목을 대체문자열로 변환
문자열.split(정규표현식) 문자열을 정규표현식에 매칭되는 항목으로 쪼개어 배열로 반환
정규표현식.test(”문자열”) 문자열이 정규표현식과 매칭되면 true, 아니면 false반환
정규표현식.exec(”문자열”) match 메서드와 유사 단, 첫번째 매칭 결과만 반환
// 정규표현식을 담은 변수
const regex = /apple/; // apple 이라는 단어가 있는지 필터링

// "문자열"이 "정규표현식"과 매칭되면 true, 아니면 false반환
regex.test("Hello banana and apple hahahaha"); // true

// "문자열"에서 "정규표현식"에 매칭되는 항목들을 배열로 반환
const txt = "Hello banana and apple hahahaha";
txt.match(regex); // ['apple']

// "정규표현식"에 매칭되는 항목을 "대체문자열"로 변환
txt.replace(regex, "watermelon"); // 'Hello banana and watermelon hahahaha'

정규식 플래그

정규식을 생성할 때 고급 검색을 위한 전역 옵션을 설정할 수 있도록 지원하는 기능

i 대소문자 구별 x
g 문자열 내의 모든 패턴 검색
m 문자열의 행이 바뀌어도 계속 검색
s .(모든 문자 정규식)이 개행 문자 \n도 포함하도록
u 유니코드 전체를 지원
y 문자 내 특정 위치에서 검색을 진행하는 sticky 모드 활성화

정규식 기호 모음

a-zA-z 영어알파벳(-으로 범위 지정)
ㄱ-ㅎ가-힣 한글 문자
0-9 숫자
. 모든 문자열
단, 줄바꿈 X
\d 숫자
\D 숫자가 아닌 것
\w 밑줄 문자를 포함한 영숫자 문자에 대응[A-Za-z0-9]와 동일
\W \w가 아닌 것
\s space 공백
\S space 공백이 아닌 것
\특수기호 특수 기호**\* \^ \& \! \? ...등**
\b 63개 문자(영문 대소문자 52개 + 숫자 10개 + _(underscore))가 아닌 나머지 문자에 일치하는 경계
\B 63개 문자에 일치하는 경계
\x 16진수 문자에 일치**/\x61/**는 a에 일치
\0 8진수 문자에 일치/\141/은 a에 일치
\u 유니코드(Unicode) 문자에 일치**/\u0061/**는 a에 일치
\c 제어(Control) 문자에 일치
\f 폼 피드(FF, U+000C) 문자에 일치
\n 줄 바꿈(LF, U+000A) 문자에 일치
\r 캐리지 리턴(CR, U+000D) 문자에 일치
\t 탭 (U+0009) 문자에 일치