멍
illegal group reference 본문
개발하는 사이트의 비밀번호 변경과정에서 발생한 에러
여느 사이트에도 비슷한 경험담이 있어 그것과 같이 해결했으며, 기록함
key, value 형식으로 메일 템플릿에 비밀번호를 넣는 과정에서 replaceAll함수를 사용하는 과정이 있었는데
비밀번호에 "$'가 포함되어 있으면 에러가 발생하였다.
자바 공식 문서에서 replaceAll의 사용
함수 내부로 들어가보면 Matcher클래스의 replaceAll 함수 내에
do{ // sb 는 stringBuffer, replacement는 바꿀 문자열이다.
appendReplacement(sb, replacement);
} while
로 구현이 되어있고
appendReplacement를 보면 바꿀문자열을 charAt으로 쪼개서
nextChar에 담고 그것을 \\인지 $인지 if else로 비교하고 있다
여기서 던진 에러 Illegal group reference였다.
그래서 원점으로 돌아오면 결국 $나 \\는 에러를 발생시키기 때문에
넘기는 값을 미리 .replaceAll("[$]", "\\\\\\$");
$값을 \$값으로 변환해서 다시 replaceAll로 넘겨주니 원하는 동작이 구현되었다.
'java' 카테고리의 다른 글
Java 심화 (0) | 2019.05.25 |
---|---|
객체의 주소값 비교 메소드 System.identityHashCode Object.hashCode (0) | 2019.01.10 |
java reflection (0) | 2018.11.30 |