1234567을 1,234,567로 바꾸고 싶다. toLocaleString() 쓰면 되지만, 정규표현식으로도 할 수 있다.
전방탐색 패턴
(?=([0-9]{3})+$) 이 패턴은 뒤에서부터 3자리씩 있는 위치를 찾는다. 이 위치에 콤마를 넣으면 된다. 정규표현식 테스터에서 직접 해보자.
JavaScript 코드
1234567.toString().replace(/B(?=(d{3})+(?!d))/g, ,) 하면 1,234,567이 된다. B는 단어 경계가 아닌 위치다.
소수점 있을 때
1234567.89 같은 경우는 소수점 앞부분만 처리해야 한다. split(.)으로 나눠서 앞부분만 정규표현식 적용하고 다시 합치자. 테스터로 여러 숫자를 실험해보면 감이 온다.
실무에서 자주 하는 실수
정규표현식을 처음 쓸 때 가장 흔한 실수가 특수문자 이스케이프를 빼먹는 거다. 점(.)을 문자 그대로 찾으려고 했는데 아무 문자나 다 매칭되는 상황. 항상 특수문자가 있으면 이스케이프가 필요한지 확인하자.
테스트 습관 들이기
정규표현식 테스터로 패턴을 작성하기 전에 먼저 테스트하는 습관을 들이면 실수를 크게 줄일 수 있다. 예상대로 동작하는지 여러 입력으로 확인하고 나서 코드에 적용하자. 그래야 나중에 디버깅 시간을 아낄 수 있다.
정규표현식이 만능은 아니다
모든 문자열 처리를 정규표현식으로 하려고 하면 오히려 복잡해진다. 단순한 작업은 문자열 메서드로, 복잡한 파싱은 전용 라이브러리로 하는 게 나을 수 있다. 적재적소에 사용하자.
정규표현식 테스터를 적극 활용해서 다양한 패턴을 실험해보자. 실전 경험이 쌓일수록 정규표현식 작성이 수월해진다.