문자열 중간에 문자열을 끼워넣기 위해서 보통은 SUBSTR로 잘라낸 뒤 CONCAT 또는 || 로 붙이게 되는데 특정 함수로 가져와야 되는 문자열의 경우 함수를 여러번 쓸 필요없이 REGEXP_REPLACE 함수와 정규식을 이용하여 처리 가능하다. SELECT REGEXP_REPLACE(‘0224’, ‘(^.{2})’, ‘\1/‘) AS MMDD FROM DUAL; 위 쿼리문은 문자열 시작부터 문자2개까지 매치된 문자열을 해당문자열 + “/“ 로 치환하라는 것이기에 문자열 0224 는 02/24 로 변환된다. 참고. 괄호로 둘러싼 단위는 그룹을 나타냄 {숫자}는 숫자만큼 있음 .은 아무문자 1개 (공백포함) ^는 문자열의 시작 (만약 [] 안에 쓰여지는 경우 패턴 불일치의 의미)
정규식 패턴을 이용한 카드번호 마스킹 처리 앞 7자리부터 6개의 문자를 "*"로 치환한다. private final static Pattern pan_pattern = Pattern.compile("^(\\d{4}\\D?\\d{2})(\\d{2})(\\D?)(\\d{4})(\\D?\\d{4})$"); public static boolean isPAN(String pan) { Matcher matcher = pan_pattern.matcher(pan); return matcher.matches(); } public static String maskPAN(String pan) { Matcher matcher = pan_pattern.matcher(pan); if(matcher.find()) { return ..
정규식 패턴을 이용한 주민등록번호 마스킹 처리 앞 7자리를 제외한 나머지 문자를 "*"로 치환한다. private final static Pattern ssn_pattern = Pattern.compile("^(\\d{6}\\D?\\d{1})(\\d{6})$"); public static String maskSSN(String ssn) { Matcher matcher = ssn_pattern.matcher(ssn); if(matcher.find()) { return new StringBuffer (matcher.group(1)).append("******").toString(); } return ssn; } 다른 방법으로 무조건 마지막 6자리를 *표로 치환하는 방법 private final static ..
정규식 패턴을 이용한 휴대폰, 일반전화 마스킹 처리 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 = p..
- Total
- Today
- Yesterday