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) 문자에 일치 |