프론트엔드/기타
[정규표현식] 원하는 문자를 찾는 간단한 방법!
잡캐헨리
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]/ 와 동일 |
[^] | [ ]안의 문자열 앞에 ^이 쓰이면, [ ]안에 없는 문자를 검색함 |