유틸리티 소개

비밀번호 복잡성 검사하는 정규표현식 만들기

비밀번호는 대문자, 소문자, 숫자, 특수문자 조합에 8자 이상. 이런 조건을 정규표현식 하나로 검사할 수 있을까?

전방탐색 활용

^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%]).{8,}$ 이 패턴은 전방탐색(lookahead)을 쓴다. 정규표현식 테스터에서 Test1234!를 넣으면 통과한다.

패턴 분석

(?=.*[a-z])는 소문자가 하나라도 있어야 한다는 뜻. 이런 조건을 여러 개 붙이면 모든 조건을 만족해야 통과한다. .{8,}는 총 8자 이상.

실무 팁

정규표현식으로 한 번에 검사하는 것보다 조건별로 따로 검사하는 게 사용자 피드백 주기 좋다. 대문자가 없으면 대문자가 필요하다고 알려줄 수 있으니까. 테스터로 각 조건을 따로 테스트해보자.

실무에서 자주 하는 실수

정규표현식을 처음 쓸 때 가장 흔한 실수가 특수문자 이스케이프를 빼먹는 거다. 점(.)을 문자 그대로 찾으려고 했는데 아무 문자나 다 매칭되는 상황. 항상 특수문자가 있으면 이스케이프가 필요한지 확인하자.

테스트 습관 들이기

정규표현식 테스터로 패턴을 작성하기 전에 먼저 테스트하는 습관을 들이면 실수를 크게 줄일 수 있다. 예상대로 동작하는지 여러 입력으로 확인하고 나서 코드에 적용하자. 그래야 나중에 디버깅 시간을 아낄 수 있다.

정규표현식이 만능은 아니다

모든 문자열 처리를 정규표현식으로 하려고 하면 오히려 복잡해진다. 단순한 작업은 문자열 메서드로, 복잡한 파싱은 전용 라이브러리로 하는 게 나을 수 있다. 적재적소에 사용하자.

정규표현식 테스터를 적극 활용해서 다양한 패턴을 실험해보자. 실전 경험이 쌓일수록 정규표현식 작성이 수월해진다.