: 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어
if(userid == null || userid.isBlank()) {
System.out.println("[경고] 아이디는 공백이 아닌 글자로 입력하세요");
return;
} else {
// userid 는 첫글자는 반드시 영문(대.소문자)자로 시작해야 하고 그 나머지 글자는
// 영문자 또는 숫자로만 이루어져야 한다. !!
// 그리고 userid의 길이는 최소 3글자, 최대 10글자로 제한한다.
// 정규표현식(Regular Expression) 이란?
// 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어
// ==1. 정규표현식 패턴을 작성한다.==//
Pattern p = Pattern.compile("^[A-Za-z][A-Za-z0-9]{2,9}$");
// ^는 시작을 의미한다.
// $는 끝을 의미한다.
// []는 글자 1개가 들어오는 것을 의미한다.
// [a-z]
// [A-Za-z]는 글자 1개가 들어오는데 A-Z 혹은 a-z까지만 가능(=영문자만 가능)하다는 뜻
// 연속된 숫자는 0-9로 쓰지만, 중간에 34를 빼고싶다 하면 01256789 이렇게 써야만 한다.
// [A-Za-z0-9] 는 글자 1개가 들어오는데 영문자 또는 숫자만 가능하다.
// [A-Za-z0-9]{2,9} 은 [A-Za-z0-9]이 최소 2번 반복 최대 9번 반복해야 한다.
// == 2. 문자열이 주어진 정규식 패턴과 일치하는지 판별하는 객체를 생성한다. ==
Matcher m = p.matcher(userid);
//3. 판별하도록 한다.
if(m.matches()) {//일치하면 true 불일치하면 false
this.userid = userid;
} else {
System.out.println("아이디는 첫글자는 영문이어야 하고 나머지는 영문 또는 숫자로만 이루어지며 3~10글자만 가능합니다.");
}
// 또는 성명을 정규 표현식으로 검사해보겠다. ========
public void setName(String name) {
//성명은 공백이 없는 한글로만 이루어져야 하며 최소 2글자 이상 최대 6글자로만 되어져야 한다.
// --1. 정규표현식 패턴을 작성한다. ==
Pattern p = Pattern.compile("^[가-힣]{2,6}$");
// == 2. 문자열이 주어진 정규식 패턴과 일치하는지 판별하는 객체를 생성한다. ==
Matcher m = p.matcher(name);
//3. 판별하도록 한다.
if(m.matches()) {//일치하면 true 불일치하면 false
this.name = name;
} else {
System.out.println("[경고]성명은 공백이 없는 한글로만 이루어져야 하며 최소 2글자 이상 최대 6글자로만 되어져야 합니다.");
}
}