여러 검증 규칙을 같은 위치에 겹치기
비밀번호가 여덟 글자 이상이고 소문자, 대문자, 숫자를 하나씩 포함해야 한다고 해 보자. 전방 탐색을 쓰면 가능한 문자 순서를 모두 나열하지 않고 각 조건을 독립적으로 적을 수 있어.
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
^에서 모든 검사를 시작해.- 세 전방 탐색이 소문자, 대문자, 숫자의 존재를 각각 확인해.
.{8,}가 실제 문자를 여덟 개 이상 소비해.$는 끝을 검사하지만 엔진에 따라 마지막 줄바꿈 직전에도 성공할 수 있어. 엄격한 검증에는 전체 일치 API를 써.
조건을 더하거나 빼기 쉬워
특수 문자가 필요하면 (?=.*[!@#$%^&*])를 더하고, 공백을 금지하려면 (?!.*\s)를 더해. 각 검사가 독립적이라 규칙의 뜻을 따로 읽을 수 있어.
검증 코드는 전체 일치로 마무리해
전방 탐색은 조건을 확인할 뿐 입력 전체를 소비하지 않아. 마지막 본 패턴이 전체 입력을 덮는지 확인하고, Python에서는 fullmatch처럼 전체 일치를 보장하는 API를 사용해.