표준 다중 룰 예시
"비밀번호 8+ 글자, 소문자/대문자/숫자 각 하나 이상." Lookahead 없이는 악몽: 필수 글자가 등장할 모든 순서 enumerate.
Stack 된 lookahead 로 깨끗:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
왼쪽에서 오른쪽:
^— 문자열 시작(?=.*[a-z])— 어딘가 앞에 소문자(?=.*[A-Z])— 어딘가 앞에 대문자(?=.*\d)— 어딘가 앞에 숫자.{8,}— 실제로 8+ 글자 소비$— 문자열 끝
세 lookahead 가 시작에서 돌아. 각각 앞을 엿봐서 어딘가 제약 존재 확인. 셋 다 통과 후 패턴이 8+ 글자 소비 진행.
왜 이게 교과서 예시
Lookaround 의 모든 중요한 거 시연:
- 같은 위치에 여러 제약 stack.
- 각 제약 독립 (순서 무관).
- 최종 소비가 제약과 별개.
- 결과가 거의 spec 처럼 읽힘.
룰 더 추가
특수 글자 하나 이상 필요? (?=.*[!@#$%^&*]) 추가. 공백 금지? (?!.*\s) (negative lookahead) 추가. 패턴이 linear 자라남, 지수적 아님.