우아한 테크코스 LV1 사다리 게임을 진행하면서 Validation 처리로 정규표현식을 사용할 일 이 생겼다.
알파벳 외에는 입력받지 않는 것이였는데 이에 정규 표현식을 사용하여 처리하면 쉽게 해결 할 수 있다는 것을 배웠다.
자바 정규 표현식
자바에서는 주로 Pattern 클래스와 Matcher 클래스를 사용하여 자바 정규 표현식을 사용한다.
Pattern 이란 주어진 문자열이 정규식에 매칭되는지 테스트 하는 것이며
Matcher란 문자열의 패턴을 해석하고 주어진 패턴과 일치하는지 체크할때 사용한다.
자바 정규 표현식 문법
^ - 정규식의 시작
$ - 정규식의 끝
. - 임의의 한글자가 존재한다
? - 앞의 문자가 하나이거나 없거나
* - 앞의 문자가 0 ~ 무한한 것
+ - 앞의 문자가 1 ~ 무한한 것
{} - 문자가 나오는 횟수를 말한다.
- {n} 앞의 문자가 정확히 n번
- {n,} 앞의 문자가 적어도 n번 나온다
- {n,m} n~m번 나온다.
() - 하나의 문자로 취급
미리 정의된 문자 클래스
\d - 0~9 의 숫자
\s - 공백문자
\S - 공백문자를 제외한 문자
\w - 알파벳 또는 숫자
\W - 알파벳 또는 숫자를 제외한 문자
자주 사용할 것 같은 표현식
^[0-9]*$ - 0~9까지의 숫자가 0~ 무한히있거나 -> 숫자 검증
^[a-zA-z]*$ - 소문자와 대문자가 0~ 무한히 있거나 -> 영문검증
^[가-횧]*$ - 가~횧까지 0~무한하게 -> 한글 검증
코드
private static final Pattern pattern = Pattern.compile("^[a-zA-Z]+$");
내가 작성한 코드의 일부분이다. 패턴은 영어가 최소 1개 인 것을 의미한다.
Matcher matcher = pattern.matcher(name);
if (!matcher.matches()) {
throw new IllegalArgumentException();
}
이렇게 작성하여 검증한다!
'코코코딩공부 > JAVA' 카테고리의 다른 글
[JAVA] 일급 컬렉션 (0) | 2023.02.25 |
---|---|
[JAVA] 원시값 포장 (0) | 2023.02.25 |
[JAVA] equals와 hashCode를 Override 해야하는 이유 (0) | 2023.02.25 |
[JAVA] static, final, static final 이란 ? (0) | 2023.02.12 |
[JAVA] ENUM (0) | 2023.02.06 |