프론트엔드/기타

[정규표현식] 원하는 문자를 찾는 간단한 방법!

잡캐헨리 2022. 10. 17. 23:54



예전에 해커톤으로 반려동물 SNS Oropet 프로젝트를 진행할때 한번 정규표현식을 만난적 있다. 시간에 쫒기며 개발을 해야해서 제대로 이해하지 못하고 넘어갔던 개념인데 이번 기회에 한번 알아보고자 한다.

 

정규표현식?

let regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;

정규표현식은 프로젝트를 한번이라도 진행해 봤다면 어렴풋이 알것이다. 처음보면 난처하기 그지없는 이 표현식은 올바른 이메일형식인지 확인하는 정규표현식이다. 정규표현식이란 문자열에서 특정한 규칙에 따른 문자열 집합을 표현하기 위해 사용되는 형식 언어인데 대표적으로 웹 어플리케이션을 만들때 가장 먼저 마주하게되는 난관중 하나인 회원가입, 로그인 과같은 인증페이지를 만들때 사용하게 된다.

 

정규표현식 패턴

정규표현식은 크게 두가지 방법으로 사용할 수 있는데, 리터럴 패턴과, 생성자 함수 호출 패턴을 사용할 수 있다.

 

^ 줄(Line)의 시작에서 일치 /^abc/
$ 줄(Line)의 끝에서 일치 /xyz$/
. (특수기호, 띄어쓰기를 포함한) 임의의 한 문자
a|b a or b 와 일치, 인덱스가 작은 것을 우선 반환
* 0회 이상 연속으로 반복되는 문자와 가능한 많이 일치. {0,} 와 동일
*? 0회 이상 연속으로 반복되는 문자와 가능한 적게 일치. {0} 와 동일
+ 1회 이상 연속으로 반복되는 문자와 가능한 많이 일치. {1,} 와 동일
+? 1회 이상 연속으로 반복되는 문자와 가능한 적게 일치. {1} 와 동일
{3} 숫자 3개 연속 일치
{3,} 3개 이상 연속 일치
{3, 5} 3개 이상 5개 이하 연속 일치
() 캡쳐(capture)할 그룹
[a-z] a부터 z 사이의 문자 구간에 일치(영어 소문자)
[A-Z] A부터 Z 사이의 문자 구간에 일치(영어 대문자)
[0-9] 0부터 9 사이의 문자 구간에 일치(숫자)
\(역슬래쉬) escape 문자. 특수 기호 앞에 \를 붙이면 정규식 패턴이 아닌, 기호 자체로 인식
\d 숫자를 검색함. /[0-9]/와 동일
\D 숫자가 아닌 문자를 검색함. /[^0-9]/와 동일
\w 영어대소문자, 숫자, (underscore)를 검색함. /[A-Za-z0-9]/ 와 동일
\W 영어대소문자, 숫자, (underscore)가 아닌 문자를 검색함. /[^A-Za-z0-9]/ 와 동일
[^] [ ]안의 문자열 앞에 ^이 쓰이면, [ ]안에 없는 문자를 검색함