클래스 활용해서 패턴매치 시켜보기/ 현재 시간 입력해보기

BRINCE·2022년 9월 15일
0

자바 스터디

목록 보기
3/10

생각해보기

  • 아이디,비밀번호에 특정 패턴 부여 (pattern.Matches)
    • 아이디가 6글자 이상 20글자 이하여야 합니다.
    • 비밀번호가 8자 ~15자 사이의 길이에 특수문자가 하나이상 들어가야합니다.
  • 이름에 영어/숫자 포함시에 문구 출력 (pattern.Matches)
    • 단순히 한글이름을 입력받고 싶기 때문에 a-zA-Z0-9 가 포함시에 문구를 출력하게 합니다. (마찬가지로 예외를 정의해서 출력할 수 있습니다.)
  • 이메일 입력시에 제대로된 형태가 아니라면 문구 출력 (pattern.Matches)
    • 이메일 입력시에 DDD@DDD.com등의 형식이 아니라면 가입이 불가능합니다.
  • 특정 형태로 가입시에 가입 일시 저장하기 (SimpleDateFormat)
    • #년 #월 #일 #시에 가입했는지 정보를 저장합니다.

만약에 새로 기능을 추가한다면

  • 아이디, 패스워드를 따로 입력하지 않고 공백으로 나눠서 입력받기 (StringTokenizer)
    • 아이디를 입력받고 다음 라인에 비밀번호를 입력받는게 아닌 아이디, 비밀번호를 한줄에 입력 받을 수 있습니다. 그런데 의미가 있을까요 ? 😒
  • String 클래스를 사용하여 append 로 랜덤 비밀번호 생성하기 (정규 표현식 클래스로 이용)
    • 비밀번호를 정하기 어렵다면 비밀번호를 만들어주는 기능도 추가해 도움을 줄 수 있습니다. 랜덤 숫자와 랜덤 대문자,소문자 로 특정 문자열 길이의 비밀번호를 생성해줍니다.

구현해볼 각각 기능들의 뼈대 구성해보기

아이디,비밀번호에 특정 패턴 부여 (pattern.Matches)

  • 아이디가 6글자 이상 20글자 이하여야 합니다.
  • 비밀번호가 8자 ~15자 사이의 길이에 특수문자가 하나이상 들어가야합니다.
  • 이름에 영어/숫자 포함시에 문구 출력 (pattern.Matches)
  • 단순히 한글이름을 입력받고 싶기 때문에 a-zA-Z0-9 가 포함시에 문구를 출력하게 합니다. (마찬가지로 예외를 정의해서 출력할 수 있습니다.)
  • 이메일 입력시에 제대로된 형태가 아니라면 문구 출력 (pattern.Matches)
    • 이메일 입력시에 DDD@DDD.com등의 형식이 아니라면 가입이 불가능합니다.

아이디는 간단히 length() 로 문자열 길이를 입력받을 수 있지만 배운것을 활용해야 하기 때문에 pattern 을 만들어볼게요. 🙌

"^[A-Za-z0-9]{6,13}$" // 아이디 특수문자나 한글 X
"^(?=.*[a-zA-Z])(?=.*\\d)(?=.*\\W).{8,15}$"; //8~15자 특수문자 포함
"^[가-힣]*$"; //한글이름
"^[A-Z0-9a-z]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}$"; //이메일 

해당 패턴을 만들어둔 회원가입 기능에 추가해보도록 합시다.

 if (!Pattern.matches("^[a-zA-Z0-9_]{6,13}$", id)) {
     System.out.println("아이디 형식이 잘못되었습니다.");
     Customer.main(null);
    }

각 입력받는 문단 다음줄에 이렇게 패턴을 매치하게 만들고 매치하지 않을땐 메인으로 돌아가게 기능을 바꿔주었어요.😊

가입시에 가입한 연월일시 정보 입력하기

  • 특정 형태로 가입시에 가입 일시 저장하기 (SimpleDateFormat)
  • #년 #월 #일 #시에 가입했는지 정보를 저장합니다.

SimpleDateFormat 클래스를 활용해 간단하게 입력받을 수 있어요😉

SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss" 
//년,월,일, 시간~초로 출력하는 객체 생성

이렇게 미리 클래스 객체를 생성해줍니다.

현재 시간을 출력할때는

Date now = new Date(); //date 클래스 객체 생성 
String date = sdf.format(now); //date 변수에 시간 저장

이렇게 초기화할 변수에 대입할 수 있어요
그렇게

저장할객체배열[순서].setDate(date);

세터로 초기화해주면 끝!

실행해보기

이렇게 모든 정보를 조건에 맞게 입력하면 정상적으로 가입이 완료됩니다.

가입시간도 알맞게 입력된걸 알 수 있죠?? 😗

이렇게 조건에 맞지 않게 입력하면 메인으로 돌아가는 모습을 볼 수 있습니다 😅

마무리

정규표현식을 활용해서 패턴을 짤때 가장 필요한건 내가 원하는걸 정확하게 정규표현식으로 적어낼 수 있느냐가 가장 중요한것 같습니다.

패턴 자체를 달달 외우는 방법도 있지만 , 단순히 머릿속으로 이해를 하는 방법이 이 챕터에선 가장 좋은 방법일거 같아요 😉

저도 마찬가지로 이해를 하려고 노력했지만 많이 힘들어서 패턴 자체는 다른 글들 참고해서 긁어오긴 했답니다 ㅠ.ㅠ.

배운것을 활용해서 간단하게 정리/ 기존에 만들어 둔 것들에 활용 해보았어요.

감사합니다 😁

profile
자스코드훔쳐보는변태

0개의 댓글