회원가입 폼에서 이메일 유효성 검사를 해야 한다. 정규식으로 하라는데, 패턴 만들다가 머리 아프다. 맞는 건지 틀린 건지 확인도 어렵다.
정규식이 뭔지
텍스트에서 특정 패턴을 찾는 문자열이다. 이메일이면 [email protected] 형태를 찾는 패턴을 만든다. 근데 이게 생각보다 복잡하다.
정규식 테스터에서 패턴이 제대로 작동하는지 실시간으로 확인할 수 있다. 패턴 쓰고 테스트 문자열 넣으면 매칭되는 부분이 하이라이트된다.
이메일 정규식 예시
이메일 정규식 기본 패턴:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
이 패턴을 정규표현식 테스터에 넣고, [email protected] 같은 이메일을 테스트하면 매칭되는지 확인할 수 있다.
프리셋 패턴 제공
자주 쓰는 패턴이 미리 준비되어 있다:
- 이메일
- URL 정규식
- 전화번호
- 한글만
- 숫자만
Regex 테스트할 때 프리셋 클릭하면 패턴이 자동 입력된다.
플래그 설정
패턴 매칭 옵션을 조절할 수 있다:
- g (global): 전체에서 모든 매칭 찾기
- i (insensitive): 대소문자 무시
- m (multiline): 여러 줄 모드
- s (dotall): .이 줄바꿈도 매칭
캡처 그룹 확인
괄호로 묶은 부분이 캡처 그룹이다. 이메일에서 아이디 부분만, 도메인 부분만 추출하고 싶을 때 쓴다.
정규식 테스터에서 각 그룹이 뭘 캡처했는지 보여준다. 그룹 1, 그룹 2 이렇게 번호가 붙는다.
매치 위치 정보
정규식 검증 결과에 매치된 문자열이 몇 번째 글자부터 몇 번째까지인지 표시된다. 프로그래밍에서 substr 같은 거 쓸 때 인덱스를 알 수 있다.
Quick Reference
정규식 문법 헷갈릴 때 참고할 수 있는 치트시트가 있다:
- \d: 숫자
- \w: 문자(영숫자+밑줄)
- \s: 공백
- +: 1개 이상
- *: 0개 이상
- ?: 0개 또는 1개
정규식 연습하면서 문법을 익힐 수 있다.
정규식 플래그 실험
정규식 플래그를 바꿔가면서 결과가 어떻게 달라지는지 실험할 수 있다. i 플래그 켜면 ABC도 abc도 매칭되는 식으로.
정리
정규식 패턴이 맞는지 모르겠으면 정규식 테스터에서 직접 테스트해보면 된다. 실시간으로 결과가 나오니까 패턴 수정하면서 확인하기 편하다. 이메일, URL 같은 프리셋도 있어서 처음부터 만들 필요 없다.