티스토리 뷰

정규식 패턴을 이용한 휴대폰, 일반전화 마스킹 처리

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

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday