회사 내부 네트워킹 플랫폼 username 운영정책을 업데이트 한다고 가정하고 푸는 문제.
정책상 8자이상 30자미만, 알파벳, 숫자 그리고 _ 로만 이루어질 수 있음. 대,소문자는 가능
첫글자는 대문자든 소문자든 무조건 알파벳이어야 함.
일단 링크 참고하면서 필요한거 뽑아서 천천히 익혀야 할듯.
^x
문자열의 시작을 표현하며 x 문자로 시작됨을 의미한다.
x$
문자열의 종료를 표현하며 x 문자로 종료됨을 의미한다.
[x-z]
range를 표현하며 x ~ z 사이의 문자를 의미한다.
\w
word 를 표현하며 알파벳 + 숫자 + _ 중의 한 문자임을 의미한다.
x{n,m}
반복을 표현하며 x 문자가 최소 n번 이상 최대 m 번 이하로 반복됨을 의미한다.
import java.util.Scanner;
class UsernameValidator {
public static final String regularExpression = "^[a-zA-Z]\\w{7,29}$";
// ^는 string을 시작하는 문자
//[a-zA-Z]는 알파벳 대,소문자
//\\w{7,29}는 끝에 도달($)할 때 까지 나머지 항목이 단어인지 확인하는 검사.
//문제에서 8이상 30미만이라고 했으므로 범위{7,29} 나타냄
}
public class Solution {
private static final Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
int n = Integer.parseInt(scan.nextLine());
while (n-- != 0) {
String userName = scan.nextLine();
if (userName.matches(UsernameValidator.regularExpression)) {
System.out.println("Valid");
} else {
System.out.println("Invalid");
}
}
}
}