//게시판 > 개인정보 기재 불가하다고 가정(개인정보 마스킹 처리)
String txt = "안녕하세요. 홍길동입니다. \n제 연락처는 010-1234-5678입니다.\n 제 메일은 hong@gmail.com입니다.\n 추가 연착처는 010-9876-5432입니다.";
//전화번호 모두 마스킹 처리
//replaceAll(String regex, String replacement)
System.out.println(txt.replaceAll("010-[0-9]{3,4}-[0-9]{4}", "XXX-XXXX-XXXX"));
//이메일 마스킹 처리
System.out.println(txt.replaceFirst("\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}","OOOO@OOOO"));
System.out.println();
//전화번호 마스킹 후 이메일 마스킹 처리
txt = txt.replaceAll("010-[0-9]{3,4}-[0-9]{4}", "XXX-XXXX-XXXX");
txt = txt.replaceFirst("\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}","OOOO@OOOO");
System.out.println(txt);
안녕하세요. 홍길동입니다.
제 연락처는 XXX-XXXX-XXXX입니다.
제 메일은 hong@gmail.com입니다.
추가 연착처는 XXX-XXXX-XXXX입니다.
안녕하세요. 홍길동입니다.
제 연락처는 010-1234-5678입니다.
제 메일은 OOOO@OOOO입니다.
추가 연착처는 010-9876-5432입니다.
안녕하세요. 홍길동입니다.
제 연락처는 XXX-XXXX-XXXX입니다.
제 메일은 OOOO@OOOO입니다.
추가 연착처는 XXX-XXXX-XXXX입니다.
String name = "홍길동;아무개,,,,,하하하,테스트,이순신 에밀리";
// , 또는 ; 또는 공백이 1글자 이상 일 때 분리
String[] list = name.split("[,;\\s]{1,}");
for (String item : list) {
System.out.println(item);
}
홍길동
아무개
하하하
테스트
이순신
에밀리
//1번과 2번 의미 동일
//String regex = "[0-9]{3}-[0-9]{3,4}-[0-9]{4}; //1번
String regex = "(\\d{3})-(\\d{3,4})-(\\d{4})"; //2번
//정규 표현식 객체 생성하기
//p1 = 정규 표현식 객체
Pattern p1 = Pattern.compile(regex);
//txt에서 p1의 패턴을 검색한다.
Matcher m1 = p1.matcher(txt);
//m1.find() : 검색 결과 유무 반환
// 출력횟수에 영향이 있다.
System.out.println(m1.find()); //true > 첫번째 : 010-1234-5678
System.out.println(m1.find()); //true > 두번째 : 010-9876-5432
System.out.println(m1.find()); //false
System.out.println(m1.find()); //false
//그룹화하여 찾기
String regex = "(\\d{3})-(\\d{3,4})-(\\d{4})";
//group(0) : (\\d{3})-(\\d{3,4})-(\\d{4})
//group(1) : (\\d{3})
//group(2) : (\\d{3,4})
//group(3) : (\\d{4})
while(m1.find()) {
System.out.println("[전화번호 발견]");
System.out.println("전화번호: " + m1.group(0));
System.out.println("통신사: " + m1.group(1));
System.out.println("앞자리: " + m1.group(2));
System.out.println("뒷자리: " + m1.group(3));
System.out.println();
}
[전화번호 발견]
전화번호: 011-1234-5678
통신사: 011
앞자리: 1234
뒷자리: 5678
[전화번호 발견]
전화번호: 010-9876-5432
통신사: 010
앞자리: 9876
뒷자리: 5432
//^ : 시작조건 / $ : 끝나는 조건
//1. 이름 > 필수, 한글, 2~5자 이내
regex = "^[가-힣]{2,5}$";
p1 = Pattern.compile(regex);
m1 = p1.matcher(name); //사용자가 입력한 이름에서 패턴 검색
if (!m1.find()) {
System.out.println("이름 > 필수, 한글, 2~5자 이내");
return false;
}
//2. 이메일 > 필수, 이메일 형식
regex = "^\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}$";
p1 = Pattern.compile(regex);
m1 = p1.matcher(email); //사용자가 입력한 이름에서 패턴 검색
if (!m1.find() || (Integer.parseInt(age) < 18 || Integer.parseInt(age) > 100)) {
System.out.println("이메일 > 필수, 이메일 형식");
return false;
}
//3. 나이 > 필수, 숫자, 18~100세
//범위는 정규표현식에서 검사 불가능하다.
regex = "^[0-9]{2,3}$";
p1 = Pattern.compile(regex);
m1 = p1.matcher(age); //사용자가 입력한 이름에서 패턴 검색
if (!m1.find()) {
System.out.println("나이 > 필수, 숫자, 18~100세");
return false;
}
//4. 아이디 > 필수, 영어+숫자+_ 조합 가능, 숫자로 시작 불가능, 4~12자 이내
regex = "^[A-za-z_][A-za-z0-9_]{4,11}$";
regex = "^[A-za-z_]\\w{4,12}$";
p1 = Pattern.compile(regex);
m1 = p1.matcher(id); //사용자가 입력한 이름에서 패턴 검색
if (!m1.find()) {
System.out.println("아이디 > 필수, 영어+숫자+_ 조합 가능, 숫자로 시작 불가능, 4~12자 이내");
return false;
}