티스토리 뷰
정규식 패턴을 이용한 휴대폰, 일반전화 마스킹 처리
private final static Pattern phone_pattern = Pattern.compile("^(01[016789]\\D?)(\\d{3,4})(\\D?\\d{4})$");
private final static Pattern tel02_pattern = Pattern.compile("^(02\\D?)(\\d{3,4})(\\D?\\d{4})$");
private final static Pattern tel_pattern = Pattern.compile("^(\\d{3}\\D?)(\\d{3,4})(\\D?\\d{4})$");
public static boolean isPhone(String phone) {
Matcher matcher = phone_pattern.matcher(phone);
if(matcher.matches()) {
return true;
} else {
matcher = tel02_pattern.matcher(phone);
if(matcher.matches()) {
return true;
} else {
matcher = tel_pattern.matcher(phone);
return matcher.matches();
}
}
}
public static String maskPhone(String phone) {
if (StringUtils.length(phone) < 9 || StringUtils.length(phone) > 13) {
return phone;
}
boolean isFind = false;
//휴대폰 번호
Matcher matcher = phone_pattern.matcher(phone);
isFind = matcher.find();
if(!isFind) {
//서울 일반전화번호
matcher = tel02_pattern.matcher(phone);
isFind = matcher.find();
if(!isFind) {
//일반 전화번호
matcher = tel_pattern.matcher(phone);
isFind = matcher.find();
}
}
if(isFind) {
if(matcher.groupCount() == 3) {
String replaceTarget = matcher.group(2);
char[] c = new char[replaceTarget.length()];
Arrays.fill(c, '*');
return new StringBuffer (matcher.group(1)).append(String.valueOf(c)).append(matcher.group(3)).toString();
} else {
return phone;
}
} else {
return StringUtils.overlay(phone, "**", StringUtils.length(phone) - 2, StringUtils.length(phone));
}
}
테스트 결과
휴대폰(010) 11자리 : 01012345678 ==> 010****5678
휴대폰(010)포맷 11자리 : 010-1234-5678 ==> 010-****-5678
휴대폰(011) 11자리 : 01112345678 ==> 011****5678
휴대폰(011)포맷 11자리 : 011-1234-5678 ==> 011-****-5678
휴대폰(011) 11자리 : 01712345678 ==> 017****5678
휴대폰(011)포맷 11자리 : 017-1234-5678 ==> 017-****-5678
휴대폰(010) 10자리 : 0101235678 ==> 010***5678
휴대폰(010)포맷 10자리 : 010-123-5678 ==> 010-***-5678
일반전화 포맷 11자리 : 031-1234-5678 ==> 031-****-5678
일반전화 11자리 : 03112345678 ==> 031****5678
일반전화 9자리 : 021235678 ==> 02***5678
일반전화 포맷 9자리 : 02-123-5678 ==> 02-***-5678
일반전화 10자리 : 0212345678 ==> 02****5678
일반전화 포맷 9자리 : 02-1234-5678 ==> 02-****-5678
'지식정보' 카테고리의 다른 글
[JAVA] 정규식 주민등록번호 마스킹처리 (0) | 2019.07.16 |
---|---|
[JAVA] 정규식 이메일 마스킹 처리 (0) | 2019.07.16 |
[JAVA] 문자열에서 숫자만 추출 (2) | 2019.06.24 |
Benthic Software Golden6 로깅 (0) | 2019.06.24 |
윈도우즈10 업데이트 실패 시 업데이트 항목 숨기기 (0) | 2019.01.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday