모두가 한 번씩 하는 다섯 실수
1. + 의도에 * 사용. 검증기가 빈 입력 받음. 수정: 콘텐츠 필수면 +.
2. 마커 사이 추출에 greedy .*. 의도 끝점 지나서 먹음. 수정: lazy .*? 또는 negated class [^X]*.
3. 패턴 끝의 \d+ anchor 없이. 부분 숫자 매칭. 수정: \b 또는 $ 로 anchor.
4. ? 가 잘못된 거에 적용. foo?bar 는 두 번째 o 만 optional, 'foo' 가 아님. 'foo' optional 로 만들려면 group: (foo)?bar.
5. 공백 있는 {3,}. 공백 있는 {3, } 는 일부 flavor 에서 리터럴 텍스트로 해석. 항상 타이트: {3,}.
Quantifier 이슈 디버깅
패턴이 "테스트 데이터엔 동작하는데 production 에 실패" 할 때, 원인은 거의 항상:
- Anchor 없는 quantifier 가 기대보다 적게 매칭.
- Greedy quantifier 가 의도 경계 지나서 먹음.
*가 테스트 데이터엔 없던 빈 입력 기쁘게 매칭.
임시 anchor 추가, 생각할 수 있는 가장 적대적 입력에 테스트 (빈 문자열, 매우 긴 문자열, 단 한 글자, 구분자만 콘텐츠 없음).