기업협업 TIL - 14. 정규표현식

박태환·2021년 9월 28일
0

기업협업 TIL

목록 보기
14/14
post-thumbnail

오늘은 Jest라는 페이스북에서 만든 테스팅 라이브러리를 이용해 테스트코드를 짜보려고 했다!
하지만 유닛테스트에 대한 경험도 적고, Jest는 또 뭔지, 테스트코드를 작성하기 위해선 정규표현식에 대해 알아야 한다는데 정확히 알지 못해 오늘은 정규표현식을 먼저 정리해보고자 한다!

정규표현식이 뭐지?


정규표현식은 문자열에 나타나는 특정 문자 조합과 대응시키기 위해 사용되는 패턴!
줄여서 정규식이라고 부르기도 한다!

자바스크립트에서, 정규 표현식 또한 객체입니다. 이 패턴들은 RegExp의 exec 메소드와 test 메소드 ,그리고 String의 match메소드 , replace메소드 , search메소드 , split 메소드와 함께 쓰입니다 .
-JavaScript | MDN

사실 이렇게 말해도 확 와닿지가 않으니 어떻게 사용되는지 바로 살펴보자!

기본적인 정규식


정규표현식설명
abcabc 가 있는 것
^abcabc 로 시작하는 것
abc$abc 로 끝나는 것
^abc$^abc$ abc 로 시작하고 끝나는 것
[abc]a,b,c 전부 중 하나를 포함한 경우
[a-z]a 에서 z 중 하나를 포함한 경우
^[0-9]숫자 0~9 중 하나로 시작하는 패턴을 찾는 것
[^0-9]숫자가 들어있지 않는 패턴을 찾는 것
^[^0-9]숫자가 들어있지 않은 문자로 시작하는 패턴을 찾는 것
a{3}a 의 3번 반복인 aaa 인 것
a{3,}a 가 3번이상 반복인 것
[0-9]{2}두 자리 숫자
abc[7-9]{2}abc 를 포함하고 7~9까지 숫자 중 2자리가 포함하는 것
[\d]숫자만 선택
[\D]숫자가 아닌것만 선택(/d와 반대)-한글,영문,공백,특수기호 등
[\w]문자와 숫자를 선택(그러나 한글은 선택되지않는다)
[\W]문자와 숫자가 아닌 것을 선택(/w와 반대)-한글,공백,특수기호
[\s]공백만 선택
[\S]공백이 아닌 것만 선택

사실 이렇게만 봐도 무슨 대충 감은 오지만 실제 대표적으로 많이 사용하는 실 사용 예를 한 번 더 정리한다.

대표적으로 많이 사용하는 정규식


설명정규표현식 패턴
이메일"/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/"
집전화번호"/^(070|02|031|032|033|041|042|043|051|052|053|054|055|061|062|063|064)-\d{3,4}-\d{4}$/"
휴대폰번호"/^(010|011|016|017|018|019)-\d{3,4}-\d{4}$/"
우편번호"/^\d{3}-?\d{3}$/"
아이디"/^[a-zA-Z]\w{2,7}$/"
주민등록번호"/^\d{2}[0-1]\d[0-3]\d-?[1-6]\d{6}$/"

휴대폰번호를 예시로 들어보자
'010-1111-2222' 라는 번호가 형식에 맞는지 확인하려는 테스트를 해보고자 할 때 "/^(010|011|016|017|018|019)-\d{3,4}-\d{4}$/"
이런 정규표현식을 사용할 수 있다.

^ : 뒤에 따라오는 문자셋으로 시작해야 한다는 뜻.
(010|011|016|017|018|019): 가운데 쓰인 |는 '또는' 이라는 뜻
/d: 숫자만 선택 ([0-9]와 같음)
{3,4}: 3자리 또는 4자리 숫자
0-9: 숫자 전부
$: 입력의 끝맺음. 위에서는 \d{4}가 있으므로 4자리 숫자로 끝맺음을 뜻함.

정규표현식은 아마 외운다기 보다는 보고 사용하면서 익숙해져야 할 것 같다.

오늘도 Jest에 대해 공부를 하긴 했지만 아직 Mock에 대해 정확히 모르겠어서..
내일은 Jest에 대해 더 공부해서 정리하고 블로그에 글을 쓸 수 있으면 좋겠다.

profile
mekemeke

0개의 댓글