View 파트에서사용자의 입력값이
제대로 된 형식인지 아닌지를 판별하기 위해
정규식을 사용할 수 있다.
정규식을 사용하기 위해 우선 클래스에서
상수화를 하고 이를 이용한 메서드를 만들어
사용자의 입력값에 대해 오류성 검사를 진행할 수 있다.
▼ 정규식 상수화
public class View {
private static Scanner sc = new Scanner(System.in);
// 정규식 상수 (재사용하기 편하게 선언)
// ------------------------------
private static final String EMAIL_CHECK = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";
// 이메일: 간단한 형태 검사용 (실무에서 더 복잡한 패턴을 쓸 수 있음)
private static final String NAME_CHECK = "^[가-힣A-Za-z]{2,20}$";
// 이름(유저네임): 한글 또는 영문 허용, 길이 2~20자
private static final String PASSWORD_CHECK = "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,20}$";
// 비밀번호: 영문자 1개 이상, 숫자 1개 이상 포함, 전체 길이 8~20자
// (?=.*[A-Za-z]) => 영문자 최소 1개
// (?=.*\\d) => 숫자 최소 1개 (주의: Java 문자열에서 '\'는 '\\'로 표기)
// [A-Za-z\\d]{8,20} => 허용문자(영문+숫자) 길이 8~20
private static final String UROLE_CHECK = "^(MEMBER|DELETE)$";
// UROLE: 허용값이 'MEMBER' 또는 'DELETE' 두 가지 뿐
private static final String ADDRESS_CHECK = "^.{5,100}$";
// 주소: 너무 다양하니 길이만 제한 (최소 5자, 최대 100자)
▼ 상수화를 활용한 메서드
private boolean checkEmail(String email) {
//이메일 입력 정규식
if (email == null) { // null이면 false
return false;
}
// matches로 정규식 검사
return email.matches(EMAIL_CHECK);
}
public static boolean checkUsername(String username) {
//이름 입력 정규식
if (username == null) {
return false;
}
return username.matches(NAME_CHECK);
}
public static boolean checkPassword(String password) {
//비밀번호 입력 정규식
if (password == null) {
return false;
}
return password.matches(PASSWORD_CHECK);
}
public static boolean checkUrole(String urole) {
//회원등급 입력 정규식
if (urole == null) {
return false;
}
return urole.toUpperCase().matches(UROLE_CHECK);
}
public static boolean checkAddress(String address) {
//배송지 입력 정규식
if (address == null) {
return false;
}
return address.matches(ADDRESS_CHECK);
}
▼ 메서드를 활용한 유효성 검사
public String inputUpdateEmail() { // 이메일 입력받기
System.out.println("새 이메일을 입력해주세요: ");
String email = sc.nextLine();
while (!checkEmail(email)) { //정규식 메서드 호출
//통과하면 T반환하며 반복되지 않는다.
System.out.println("이메일 형식이 잘못되었습니다. 다시 입력해주세요 : ");
email = sc.nextLine();
}
return email;
}
public String inputUpdateName() { // 변경할 이름 입력받기
System.out.println("새 이름을 입력해주세요: ");
String name = sc.nextLine();
while (checkUsername(name)) {
System.out.println("입력이 잘못되었습니다. 다시 입력해주세요 : ");
name = sc.nextLine();
}
return name;
}
public String inputUpdateAddress() { // 변경할 배송지 입력받기
System.out.println("새 배송지를 입력해주세요: ");
String address = sc.nextLine();
while (!checkAddress(address)) {
System.out.println("입력이 잘못되었습니다. 다시 입력해주세요 : ");
address = sc.nextLine();
}
return address;
}'개주 훈련일지 > 🏋️ 전집중 호흡 훈련' 카테고리의 다른 글
| 버튼 클릭 시 이동하기&뒤로가기 (0) | 2025.11.16 |
|---|---|
| 시퀀스와 최대 출력 제한 (0) | 2025.11.07 |
| JDBC) CRUD 메서드 정석 코드 (0) | 2025.11.03 |
| hasType - 어떠한 배열에 어떠한 타입이 있니 (0) | 2025.10.28 |
| Java에서 txt 파일 읽기, 복사하기, 저장하기 (0) | 2025.10.25 |