01. 정규 표현식이란?
🔹 일정한 패턴을 가진 문자열의 집한을 표현하기 위해 사용하는 형식 언어
🔹 문자열을 대상으로 패턴 매칭 기능 제공(특정 패턴과 일치하는 문자열을 검색하거나 추출 또는 치환할 수 있는 기능)
🔹 반복분과 조건문 없이 패턴을 정의하고 테스트하는 것으로 체크할 수 있음
⚠️ 주석이나 공백 허용하지 않고 여러가지 기호 혼합 -> 가독성 좋지 않음
02. 정규 표현식의 생성
정규 표현식 객체를 생성하기 위해서는 정규 표현식 리터럴과 RegExp 생성자 함수를 사용할 수 있다.
➡️ 정규 표현식 리터럴은 패턴과 플래그로 구성된다.
🖥️ 예제 <31-02>
const target = 'Is this all there is?'
// 패턴: is
// 플래그: i => 대소분자 구별하지 않고 검색한다.
const regexp = /is/i;
// test 메서든느 매칠 결과를 불리언 값으로 반환한다.
regexp.test(target); // -> true
// RegExp 생성자 함수를 사용한 객체 사용
const regexp = new RegExp(/is/i);
regexp.test(target);
03. RegExp 메서드
1. RegExp.prototype.exec
🔹 인수로 전달받은 문자열에 대해 정규 표현식의 패턴을 검색하여 매칭 결과를 배열로 반환
2. RegExp.prototype.test
🔹 인수로 전달받은 문자열에 대해 정규 표현식의 패턴을 검색하여 매칭 결과를 불리언 값으로 반환
3. RegExp.prototype.match
🔹 대상 문자열과 인수로 전달받은 정규 표현식과의 매칭 결과를 배열로 반환
04. 플래그
💡 정규 표현식의 검색 방식을 설정하기 위해 사용함
💡 중요한 플래그
🔹 i : 대소문자를 구별하지 않고 패턴 검색
🔹 g : 대상 문자열 내에서 패턴과 일치하는 모든 문자열을 전역 검색
🔹 m : 문자열의 행이 바뀌더라도 패턴 검색을 계속함
05. 패턴
🔹 패턴은 /로 열고 닫으며, 문자열의 따옴표는 생략한다.
🔹 어떤 문자열 내에 패턴과 일치하는 문자열이 존재할 때 '정규 표현식과 매치한다' 라고 표현한다.
1. 문자열 검색
🔹 지정한 문자 또는 문자열을 검색한다.
2. 임의의 문자열 검색
🔹 .은 임의의 문자열 한 개를 의미한다.
const target = 'Is this all there is?';
// 임의의 3자리 문자열을 대소문자를 구별하여 전역 검색한다.
const regExp = /.../g;
// .을 연속하여 패턴 생성 -> 3자리 문자열과 매치한 것을 볼 수 있다.
target.match(regExp); // -> ["Is", "thi", "s a", "ll", "the", "re ", "is?"]
3. 반복 검색
🔹{m, n} 은 앞선 패턴이 최소 m번, 최대 n번 반복되는 문자열 의미
🔹{n} 은 앞선 패턴이 n번 반복되는 문자열 의미
🔹{n, } 은 앞선 패턴이 최소 n번 이상 반복되는 문자열 의미
🔹 +는 앞선 패턴이 최소 한 번 이상 반복되는 문자열 의미
🔹 ? 는 앞선 패턴이 최대 한 번(0번 포함) 이상 반복되는 문자열 의미
4. OR 검색
🔹 | 은 or 의 의미
🔹 [ ] 내의 문자는 or로 동작한다. 그 뒤에 +를 사용하면 앞선 패턴을 한 번 이상 반복한다.
🔹 범위를 지정하려면 [ ] 내에 - 를 사용한다.
🔹 \d 는 숫자를 의미하고, [0-9]와 같다.
🔹 \D 는 문자를 의미한다. \d 와 반대임
🔹 \w 는 알파멧, 숫자, 언더스코어를 의미한다. [A-Za-z0-9_]와 동일
🔹 \W 는 \w와 반대
5. NOT 검색
🔹 [...] 내의 ^ 는 not을 의미
6. 시작 위치로 검색
🔹 [...] 밖의 ^ 는 문자열의 시작을 의미
7. 마지막 위치로 검색
🔹 $ 는 문자열의 마지막을 의미
📖 참고자료