: 정규 표현식(Regular experssion)은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 '형식언어'이다



package study.java.helper;
import java.util.regex.Pattern;
public class RegexHelper {
//---싱글톤 객체 생성---
private static RegexHelper current;
public static RegexHelper getInstance() {
if(current == null) {
current = new RegexHelper();
}
return current;
}
public static void freeInstance () {
current = null;
}
private RegexHelper() {
}
//---생글톤 객체 생성 끝---
// 주어진 문자열이 공백이거나 null인지를 검사
// @param str - 검사할 문자열
// @return boolean - 공백, null이 아닐 경우 true
public boolean isValue(String str) {
boolean result = false;
if(str !=null) {
result = !str.trim().equals("");
}
return result;
}
// validation 처리를 위한 메서드 정의
// 한글로만 구성되어 있는지 형식 검사
// @param str - 검사할 문자열
// @return boolean - 형식에 맞을 경우 true, 걿지 않을 경우 false
public boolean isKor(String str) {
boolean result = false;
if(isValue(str)) {
result = Pattern.matches("^[ㄱ-ㅎ가-힣]*$", str);
}
return result;
}
// 숫자인지를 검사
// @pram : str - 검사할 문자열
// @return : boolean - 형식이 맞을 경우 true,
// - 그렇지 않을 경우 false
public boolean isNum(String str) {
boolean result = false;
if(isValue(str)) {
result = Pattern.matches("^[0-9]*$", str);
}
return result;
}
// "-" 없이 핸드폰 번호인지를 검사
// @pram : str - 검사할 문자열
// @return : boolean - 형식이 맞을 경우 true,
// - 그렇지 않을 경우 false
public boolean isPhone(String str) {
boolean result = false;
if(isValue(str)) {
result = Pattern.matches("^01(?:0|1|[6-9])(?:\\d{3}|\\d{4})\\d{4}$", str);
}
return result;
}
// 이메일인지 검사
// @pram : str - 검사할 문자열
// @return : boolean - 형식이 맞을 경우 true,
// - 그렇지 않을 경우 false
public boolean isMail(String str) {
boolean result = false;
if(isValue(str)) {
result = Pattern.matches("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$", str);
}
return result;
}
}
package patterchecker;
import java.util.regex.Pattern;
import javax.annotation.processing.AbstractProcessor;
public class Main01 {
public static void main(String[] args) {
// 회원가입시에 압력한 내용을 가정한 변수값들
String name = "김자바";
String age = "19";
String email = "user@java.com";
String phone = "01093812070";
// 한글 여부 검사
boolean isKor = Pattern.matches("^[ㄱ-ㅎ가-힣]*$", name);
//System.out.println(isKor);
if(!isKor) {
System.out.println("이름은 한글로만 입력해주세요.");
// 실행 도중 return을 만나면 즉시 중딘
return;
}
// 숫자인지를 검사
boolean isNum = Pattern.matches("^[0-9]*$", age);
if (!isNum) {
System.out.println("나이는 숫자로만 입력해주세요");
return;
}
//이메일 검사
boolean isEmail = Pattern.matches("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$", email);
if(!isEmail) {
System.out.println("이메일 형식이 맞지 않습니다.");
return;
}
//휴대폰 번호 형식 검사
boolean isPhone = Pattern.matches("^01(?:0|1|[6-9])(?:\\d{3}|\\d{4})\\d{4}$", phone);
if(!isPhone) {
System.out.println("전화번호 형식이 맞지 않습니다.");
return;
}
System.out.println("회원가입 절차를 진행합니다");
}
}
package patterchecker;
import study.java.helper.RegexHelper;
public class Main02 {
public static void main(String[] args) {
// validation 처리를 RegexHelper의 메서드들을 사용해서 처리
String name = "김자바";
String age = "19";
String email = "user@java.com";
String phone = "01093812070";
if (!RegexHelper.getInstance().isKor(name)) {
System.out.println("이름은 한글로만 입력해주세요");
return;
}
if (!RegexHelper.getInstance().isNum(age)) {
System.out.println("나이는 숫자로만 입력해주세요");
return;
}
if (!RegexHelper.getInstance().isPhone(phone)) {
System.out.println("번호는 숫자로만 입력해주세요");
return;
}
if (!RegexHelper.getInstance().isMail(email)) {
System.out.println("메일은 영어와 숫자로만 입력해주세요");
return;
}
System.out.println("회원가입 절차를 진행합니다.");
}
}