정규표현식이란, 문자열 검색, 치환, 검증 등을 위해 사용되는 패턴 매칭 기법이다.
대표적으로, 입력칸에 전화번호나 이메일을 입력하라고 했을때 옳지 않은 값을 입력하는 경우 유효성 검사를 위해 사용한다.
주로 아래와 같이 사용된다.
/
사이에 패턴을 입력하고 플래그를 통해 검색옵션을 지정한다.
// 리터럴 방식
const regex = /aa/;
// 생성자 방식
const regex = new RegExp("aa");
const regex = new RegExp(/aa/); // 이렇게도 생성 가능하다.
"문자열".match(/정규표현식/플래그)
: 문자열 검색
"문자열".replace(/정규표현식/, "대체문자열")
: 문자열 치환
"문자열".split(정규표현식)
: 문자열 분할
정규표현식.test("문자열")
: 문자열 검증
정규표현식.exec("문자열")
: 문자열 검색
// "문자열"이 "정규표현식"과 매칭되는지 확인
const regex = /developer/;
regex.test("Hello I am developer"); // true
// "문자열"에서 "정규표현식"에 매칭되는 항목들을 배열로 반환
const txt = "Hello I am developer";
txt.match(regex); // ['developer']
// "정규표현식"에 매칭되는 항목을 "대체문자열"로 변환
txt.replace(regex, "student"); // "Hello I am student"
정규식 플래그는 정규식의 동작을 변경하여 특정한 방식
으로 검색과 대체를 수행할 수 있게 한다. 쉽게 말해 정규식 검색옵션을 설정해주는 것이다.
정규식 플래그를 여러개를 동시에 사용하여 더 세부적인 검색을 할 수 있다.
i (Ignore Case)
: 대/소문자를 구분하지 않고 검색한다.const str = "bcAbc";
str.match(/a/i); // ['A', index: 0, input: 'AbcAbc', groups: undefined]
g (Global)
: 문자열 전체에서 모든 일치 항목을 찾는다const str = "abcabc";
str.match(/a/g); // (2) ["a", "a"]
m (Multiline)
: 문자열이 여러 줄로 구성된 경우 각 줄을 독립적으로 처리한다.const str = "Frontend\nBackend\nOMG";
// Backend로 시작하는지 검사(^는 문장 시작점을 의미한다.)
str.match(/^Backend/); // null, 다음 줄은 검사가 되지 않음
str.match(/^Backend/m); // ['Backend', index: 13, input: 'Frontend and\nBackend\nOMG', groups: undefined]
s (Dotall)
: 줄바꿈 문자를 포함한 모든 문자와 일치시킨다..
예: /pattern.example/s는 "pattern\nexample"과 일치한다.
u (Unicode)
: 유니코드 문자열을 처리한다.
예: /𝄞/u는 음악 기호 '온음표'와 일치한다.
y (Sticky)
: 마지막 일치 항목 바로 다음부터 검색을 시작한다.
예: /\d+/y는 "123 456 789"에서 "123", "456", "789"를 순서대로 찾는다.
참고
정규 표현식(Regular Expression)
RegExr : 정규 표현식 테스트 사이트
패턴과 플래그
정규표현식 학습 사이트