[Java] 이메일 마스킹 처리하기(feat. 정규 표현식)

지니어스현·2023년 5월 21일
0

사이드 프로젝트 중 이메일(아이디) 찾기 API를 구현해야 했는데, 별표(*)로 마스킹해서 응답을 내려달라는 요구사항이 추가되었다.
도메인 앞의 아이디 부분에서 앞의 3개 문자 이후의 문자들을 마스킹해야 했다.

처음 짠 코드

private String mask(String email) {
	String[] splitEmail = email.split("@");

	return splitEmail[0].substring(0, 3) + "*".repeat(splitEmail[0].length() - 3) + 
    	"@" + splitEmail[1];
}

이해하기는 쉬운데.. 🤔
정규 표현식을 사용하면 더 간단하게 처리할 수 있을 것 같았다.

정규 표현식을 사용한 코드

private String mask(String email) {
	return email.replaceAll("(?<=.{3}).(?=[^@]*?@)", "*");
}

한 줄로 줄어들었다!

  1. (?<=.{3}): 앞의 3개 문자(어떤 문자든 상관없음) 뒤에 있는 문자들을 찾고
    (?<=: 찾으려는 패턴이 어떤 다른 패턴 뒤에 있어야 찾음)
  2. (?=[^@]*?@): @ 앞에 있으면서 @가 나타나지 않는 문자들을 찾고
    (?=: 찾으려는 패턴이 어떤 다른 패턴 앞에 있어야 찾음)
  3. replaceAll: 해당 정규 표현식에 해당하는 모든 문자를 바꿈
profile
넓은 바다에서 유영하는 범고래

0개의 댓글