자주 만나는 다섯 가지 실수
1. 하나 이상이 필요한데 *를 사용해. 빈 입력도 통과해 버려. 내용이 반드시 있어야 한다면 +를 써.
2. 두 마커 사이를 탐욕적 .*로 잡아. 의도한 끝점을 지나칠 수 있어. .*?나 경계를 직접 표현한 부정형 문자 클래스를 검토해.
3. 패턴 끝의 \d+에 경계를 붙이지 않아. 더 긴 토큰의 일부 숫자도 매칭할 수 있어. 상황에 맞게 \b나 $를 붙여.
4. ?를 잘못된 요소에 붙여. foo?bar에서 선택적인 것은 두 번째 o 하나뿐이야. foo 전체를 선택적으로 만들려면 (foo)?bar라고 써.
5. {3,} 안에 공백을 넣어. {3, }는 엔진에 따라 리터럴 텍스트로 해석될 수 있어. 범위 수량자 안에는 공백을 넣지 마.
수량자 문제를 디버깅하는 순서
테스트 데이터에서는 되는데 실서비스에서 실패한다면 먼저 경계, 탐욕성, 빈 입력 허용 여부를 확인해. 임시 앵커를 붙이고 빈 문자열, 공백만 있는 문자열, 아주 긴 문자열, 구분자만 있는 문자열, 한 글자 입력을 차례로 넣어 보면 원인이 빨리 드러나.