정규표현식

매일봐도 헷갈리는 정규표현식에 대하여 기록하고자 남긴다. 매일 문서를 봐도 헷갈리는 부분에 대하여 정확하게 집고 넘어가고 모르는 부분을 기록하자.

정규표현식이 어려운 이유는 정규표현식과 정규표현식 함수의 개념을 헷갈려서 그런것 같다. 각각 요소에 대하여 잘 공부해서 정규표현식을 익히도록 하자. 먼저 정규표현식에 대한 아래 정의를 살펴보자

정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다.JavaScript에서는 정규 표현식도 객체로서, RegExp의 exec()와 test() 메서드를 사용할 수 있습니다. String의 match(), matchAll() (en-US), replace(), replaceAll(), search(), split() 메서드와도 함께 사용할 수 있습니다. 이 장에서는 JavaScript의 정규 표현식을 설명합니다.

정규표현식을 이해하기 위해서는 크게 3가지로 나눌 수 있다. 각각에 대하여 분리해서 모르는 부분을 명확하게 인지하여 공부하도록 하자.

  • 정규표현식
  • 정규표현식 메서드
  • String 메서드

정규표현식

정규표현식은 패턴과 플래그 구성되어 있다고 할 수 있다. 각각에 대하여 이해하자.

정규표현식

솔직히 정의문서만 봐서는 잘 이해가 안간다. 예제로 이해하자

표현식 설명 동일한식
/*/ 에러가 난다. *은 독립적으로 쓸 수 없는 메타태그이다. 잘못된 표현이다. * 이전에 일치시킬 문자 조건이 없다.  
/./ 단일 문자와 매칭된다.  
/.*/ 줄바꿈을 기준으로 모든 문자열이 선택된다. 이렇게 선택된 문자열은 /./ 와는 다른것을 인지하자. /.{0,}/
/.?/ 0개 또는 1개의 문자열과 일치한다. /.{0,1}/
/.+/ 1개 이상의 문자열과 일치한다. /.{1,}/

추가적으로 전방탐색후방탐색에 대한 을 꼭 익히자


정규표현식 메서드

test 메소드

test 메서드는 주어진 문자열이 정규 표현식을 만족하는지 판별하고, 그 여부를 true 또는 false로 반환합니다. 결과값이 boolean임을 기억하자

exec 메소드

exec 메소드는 객체를 또는 null을 반환한다. 문자열이 있는 경우 정규 표현식 객체의 lastIndex (en-US) 속성을 업데이트되어 index에 반영된다. 즉 아래처럼 콘솔을 출력할 경우 다른 값이 나온다.

const re = /quick/g;
const str = "quick quick";
let result = re.exec(str);
console.log(result); //[..., index: 0,...]
result = re.exec(str);
console.log(result); //[..., index: 6,...]

String 메서드

정의에서 나오듯이 아래 메소들은 꼭 익히도록 하자

  • match()
  • matchAll()
  • replace()
  • replaceAll()
  • search()
  • split()