Javascript 정규식

박종대·2022년 3월 11일
0

Javascript / Typescript

목록 보기
3/4

정규식을 이용하면 문자열과 관련된 처리가 매우매우 편리해집니다. 그래서 이번엔 정규식에 관해 정리해 보면서 공부해 보고자 합니다. 이미지 출처는 https://curryyou.tistory.com/234 입니다.

표현

/정규식/옵션

정규식은 / / 사이에 나타내고 이 뒤에는 옵션이 붙습니다. (모두 찾을 건지, 하나만 찾을 건지 등) 그럼 / / 사이에는 어떤 표현이 들어갈 수 있는지 보겠습니다.

전화번호 010-XXXX-XXXX 의 형식을 정규식으로 표현해보자. (010만 생각하겠음.)

먼저 010을 정규식으로 표현하면 다음과 같습니다. /010/

이제 특수문자인 -을 표현해보겠습니다. /010\-/ 특수문자는 다음과 같이 백 슬래시를 앞에 써 줘야 합니다. 그 이유는 특수문자는 정규식 표현에서 특별한 의미를 가지는 경우가 있습니다. (^은 맨 앞, $는 맨 뒤 등) 그래서 특수문자 그 자체를 매칭 시키고 싶을 때는 백슬래시로 구분해 줍니다.

이제 '숫자 네자리'를 표현해보겠습니다. /010\-\d{4}\-\d{4}/ 숫자는 \d로 나타냅니다. 4자리는 {4}로 나타냅니다. 앞의 문자가 4번 등장한다는 의미입니다. 4번 이상이라면 {4,}, 4번에서 5번 이하라면 {4, 5}로 표현 합니다.

전화번호를 이제 표현해보겠습니다. /010\-\d{4}\-\d{4}/ 이제 이 정규식은 우리가 흔히 아는 010-XXXX-XXXX과 매칭됩니다.

전화번호를 표현하면서 몇가지 배웠습니다. 그냥 원하는 문자 매칭은 그대로 적어주면 되는데 특수문자를 매칭 시키려면 백슬래시를 앞에 적어줘야 하는구나. 숫자면 숫자, 문자면 문자 그 자체를 표현 해주는 특수한 문자도 있구나, 반복을 나타내는 것은 대괄호 안에 표시 해주면 되는 구나 등입니다.

엇 그렇다면 특수한 문자들의 의미를 알아야 겠습니다.


딱 봐도 다들 많이 쓰일 것 같습니다. 숫자 자체는 \d로 나타내고 특이한 것은 숫자가 아닌 것은 \D로 나타낸다는 점입니다. 아닌것은 대문자로 표현하는 구나 정도로 기억하면 되겠습니다. 그리고 -로 숫자와 문자의 범위까지 지정할 수 있습니다.


|으로 조건들을 or로 나열할 수 있습니다. [ ] 안에 조건을 나열해주면 이 안의 문자들 중 하나라도 매칭을 의미하고 [^ ] 안에 나열하면 이 안의 문자를 제외한 모든 것들 중 하나라도 매칭을 의미합니다. ^을 괄호 없이 쓴다면 맨 앞, $는 맨 뒤를 의미합니다.


?는 있을수도 없을수도 니까 {0, 1}을 의미하겠습니다. *는 {0,}을 의미하고 +는 {1,}을 의미합니다.

옵션


이번엔 옵션입니다. 아까 /정규식/옵션 으로 정규표현이 구성된다고 했습니다. 옵션을 생략하면 매칭되는 첫 문자만 검색하게 됩니다. 하지만 /정규식/g 와 같이 주게되면 매칭되는 모든 문자를 검색하게 됩니다. i 대소문자 구분 안함도 굉장히 유용하게 쓰입니다.

메소드


정규식을 자주 사용하는 메소드들입니다. 코딩테스트에서는 split과 replace를 가장 많이 사용했던 것 같습니다. 나머지는 많이 아는 메소드들인데 아래 두 개는 기억해야겠습니다.
정규 표현식 regex.test('문자열')은 매칭 결과를 boolean type으로 넘겨줍니다. exec는 첫번째 매칭 결과를 반환해줍니다.

예제

https://programmers.co.kr/learn/courses/30/lessons/72410
이 문제를 정규식을 이용하여 5분안에 풀 수 있다면 정규식은 끝!

profile
Frontend Developer

0개의 댓글