^문자 : 문자(열)로 시작됨을 의미
문자$ : 문자(열)로 종료됨을 의미
. : 임의의 문자 하난를 의미(\ 문자 표현 불가능)
[문자1문자2문자3] : 나열된 문자들 중 하나를 의미
[^문자1문자2문자3] : 나열된 문자들이 아닌 문자 중 하나를 의미
[문자1-문자2] : 문자1부터 문자2 범위의 문자 중 하나를 의미
문자열1|문자열2|문자열3 : 나열된 문자열들 중 하나를 의미
문자열+ : 문자열이 1번이상 반복됨을 의미
문자열* : 문자열이 0번이상 반복됨을 의미
문자열? : 문자열이 0번 또는 1번 존재함을 의미
문자열[숫자} : 문자열이 숫자만큼 반복됨을 의미
문자열{숫자1,숫자2} : 문자열이 숫자1부터 숫자2 범위만큼 반복됨을 의미
(?!)문자열 : 문자열에서 대소문자를 구분하지 않음을 의미
(?=문자열) : 문자열이 반드시 포함됨을 의미
(!=문자열) : 문자열이 반드시 포함되지 않음을 의미
\s : 공백이 있는 문자열을 의미
\S : 공백이 있는 문자열을 의미
\w : 영문자,숫자,특수문자()의 문자로만 구성된 문자열을 의미
\W : 영문자,숫자,특수문자()의 문자를 제외한 문자로 구성된 문자열을 의미
\d : 숫자 형태의 문자로만 구성된 문자열을 의미
\D : 숫자 형태의 문자로만 구성되지 않은 문자열을 의미
\메타문자 : 메타문자를 일반문자로 표현함을 의미 - ex) . : 문자.
package xyz.itwill.util;
import java.util.Scanner;
import java.util.regex.Pattern;
//키보드로 사용자에게 입력받아 형식에 맞는 값을 비교하여 출력하는 프로그램
//→ 비정상적인 값을 입력한 경우 에러메세지를 출력하고 프로그램 종료
public class RegualarExpressionApp {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
/*
//아이디는 영문자로 시작되며 영문자,숫자,특수문자(_)의 조합으로
6~20 범위의 문자수로 값을 입력받아 사용
System.out.print("아이디를 입력해 주세요 >> ");
String id=scanner.nextLine();
if(id==null || id.equals("")) {//사용자 입력값이 없는 경우
System.out.println("[에러]아이디를 반드시 입력해 주세요");
System.exit(0);
}
//아이디 관련 정규표현식 저장
//String idReg="^[a-zA-z][a-zA-Z0-9_]{5,19}$";
String idReg="^[a-zA-z]\\w{5,19}$";
//Pattern 클래스 : 정규표현식을 이용하기 위한 기능을 제공하는 클래스
//Pattern.matches(String regex, CharSequence input) : 정규표현식과
입력값을 전달받아 입력값이 정규표현식의 규칙과 다른 경우 [false] 반환하고
동일한 경우 [true] 반환하는 메소드
if(!Pattern.matches(idReg, id)) {//입력값이 정규표현식의 규칙과 다른 경우
System.out.println("[에러]아이디를 형식에 맞게 입력해 주세요.");
System.exit(0);
}
System.out.println("[메세지]정상적인 아이디를 입력 하였습니다.");
*/
/*
//비밀번호 입력규칙 : 영문자,숫자,특수문자가 반드시 1개 이상 포함되며
8~30 범위의 문자수로 입력받아 사용하기 위한 규칙
System.out.print("비밀번호를 입력해 주세요 >> ");
String password=scanner.nextLine();
if(password==null || password.equals("")) {//사용자 입력값이 없는 경우
System.out.println("[에러]아이디를 반드시 입력해 주세요");
System.exit(0);
}
String passwordReg="^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!@#$%^&*-]).{8,30}$";
if(Pattern.matches(passwordReg, password)) {
System.out.println("[에러]비밀번호를 형식에 맞게 입력해 주세요.");
System.exit(0);
}
System.out.println("[메세지]정상적인 비밀번호를 입력 하였습니다.")
*/
//이메일 입력규칙 : [아이디@도메인] 형식으로 입력
System.out.print("이메일을 입력해 주세요 >> ");
String email=scanner.nextLine();
if(email==null || email.equals("")) {//사용자 입력값이 없는 경우
System.out.println("[에러]이메일을 반드시 입력해 주세요");
System.exit(0);
}
String emailReg="^([a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-z-A-Z0-9_-]+)+)*$";
if(Pattern.matches(emailReg, email)) {
System.out.println("[에러]이메일을 형식에 맞게 입력해 주세요.");
System.exit(0);
}
System.out.println("[메세지]정상적인 이메일을 입력 하였습니다.");
scanner.close();
}
}