일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어다.
자바스크립트의 고유 문법이 아니며, 대부분의 프로그래밍 언어와 코드 에디터에 내장되어 있다.
정규표현식은 패턴 매칭 기능을 제공하는데 이는 특정 패턴과 일치하는 문자열을 검색하거나 추출 또는 치환할 수 있는 기능을 말한다.
즉, 반복문과 조건문 없이 패턴을 가진 문자열을 간단하게 검색, 추출, 치환할 수 있다.
정규표현식 객체를 생성하기 위해서는 정규 표현식 리터럴과 RegExp 생성자 함수를 사용할수 있다.
/ => 시작, 종료 기호 ( 꼭 넣어줘야 한다! )
const target = "Is this all there is?"
//정규표현식 리터럴
const regexp = /is/i;
const regexp2 = /is/g;
console.log( target.match(regexp) );
// ['Is', index: 0, input: 'Is this all there is?', groups: undefined]
console.log( target.match(regexp2) );
// (2) ['is', 'is']
const target = "Is this all there is?"
//RegExp 생성자 함수
const regexp = new RegExp(/is/i);
// const regexp = new RegExp('is', 'i'); 도 가능하다.
console.log( target.match(regexp) );
// ['Is', index: 0, input: 'Is this all there is?', groups: undefined]
대소문자를 구별하지 않고 패턴을 검색한다.
대상 문자열 내에서 패턴과 일치하는 모든 문자열을 전역 검색한다.
문자열의 행이 바뀌더라도 패턴 검색을 계속한다.
const target = "Is this all there is?"
//target 문자열에서 is 문자열을 대소문자 구별없이 전역 검색한다.
target.match(/is/ig); // ["Is","is","is"]
인수로 전달받은 문자열에 대해 정규 표현식의 패턴을 검색하여 매칭 결과를 배열로 반환한다. 매칭 결과가 없는 경우 null을 반환한다.
const target = "Is this all there is?"
const regexp = /is/;
regexp.exec(target);
//['is', index: 5, input: 'Is this all there is?', groups: undefined]
exec 메서드는 문자열 내의 모든 패턴을 검색하는 g 플래그를 지정해도 첫 번째 매칭결과만 반환한다.
인수로 전달받은 문자열에 대해 정규 표현식의 패턴을 검색하여 매칭 결과를 불리언 값으로 반환한다.
const target = "Is this all there is?"
const regexp = new RegExp(/is/i);
regexp.test(target); => // true
대상 문자열과 인수로 전달받은 정규 표현식과의 매칭 결과를 배열로 반환한다.
const target = "Is this all there is?"
const regexp = /is/;
target.match(regexp);
//['is', index: 5, input: 'Is this all there is?', groups: undefined]
exec 메서드와 같은 메서드 비슷해 보이지만 match 메서드는 g 플래그가 지정되면 모든 매칭 결과를 배열로 반환한다.
const target = "Is this all there is?"
const regexp = /is/g;
target.match(regexp);
//["is","is"]
정규 표현식은 패턴과 플래그로 구성되는데 패턴은 문자열의 일정한 규칙을 표현하기 위해 사용한다.
기본 메타 문자는 글자 하나의 의미를 말한다. 이 자체만으로는 큰 활용도가 없고 다른 기능들과 같이 쓰일 때 의미가 있다.
문자 하나가 아니라 조건에 해당하는 붙어있는 여러개의 문자를 찾는다는 것이 핵심이다. *, + 의 차이를 이해해야 한다.
*는 없는 경우가 포함되고
+는 무조건 하나는 있어야 한다는 의미다.
다음으로 탐욕적 수량자와 게으른 수량자를 이해해야 한다.
탐욕적 수량자의 핵심은 조건에 맞지 않을 때까지 하나의 패턴으로 인식하는 것이고
게으른 수량자의 핵심은 조건에 맞으면 욕심부리지 말고 거기서 끝내는 것이다.
글자 자체를 찾는 물리적 의미가 아니라 내부적인 의미를 찾는 논리적 수행만 한다. 위치 지정 또한 이 자체만으로는 의미가 없으며 ^, \b, \B 다음이나 \b, \B, $ 전에 나오는 문자나 부분식과 함께 동작한다.