만약 숫자로만 이루어져 있는지, 대문자, 소문자를 포함하고 있는지 검사하고 싶다면 요소 하나하나를 비교하는 방법도 있지만 정규식을 이용하며 간단하게 확인할 수 있다.
정규식 문법 기호 모음
정규식 기본 기호
기호 | 설명 | 예제 |
. | 임의의 문자 1개를 의미 | |
^ | 시작을 의미한다 [] 괄호 안에 있다면 일치하지 않는 부정의 의미로로 쓰인다 |
^a : a로 시작하는 단어 [^a] : a가 아닌 철자인 문자 1개 |
$ | $앞의 문자열로 문자가 끝나는지를 의미한다 | a$ : a로 끝나는 단어 |
[] | [] 괄호 안의 문자가 있는지를 확인한다 | [ab][cd] : a,b중 한 문자와 c,d중 한 문자 → ac ad bc bd |
[^] | [] 대괄호 안에 ^ 문자가 있으면, 제외를 뜻함 - 대괄호 안에 ^ 가 쓰이면 제외의 뜻 - 대괄호 밖에 ^ 가 쓰이면 시작점의 뜻 |
[^a-z] : 알파벳 소문자 a부터 z까지를 제외한 모든 문자 |
- | 사이의 문자 혹은 숫자를 의미한다 | [a-z] : 알파벳 소문자 a부터 z까지 하나 [a-z0-9] : 알파벳 소문자 전체,0~9 중 한 문자 |
| | 또는 | [a|b] : a 혹은 b |
() | 그룹 | 01(0|1) : 01뒤에 0 또는 1이 들어간다 → 010(o), 011(o), 012(x) |
{} | 개수 | a{3}b : a가 3번 온 후 b가 온다 → aab(x), aaab(o), aaaab(o) |
\b | 공백, 탭, ",", "/" 등을 의미한다 | apple\b : apple뒤에 공백 탭등이 있다 → apple juice (o), apple.com (x) |
\B | \b의 부정 공백 탭등이 아닌 문자인 경우 매치한다 |
apple\B → apple.com (o) |
\d | 0~9 사이의 숫자 [0-9]와 동일 |
|
\D | \d의 부정 숫자가 아닌 어떤 문자, [^0-9]와 동일 |
|
\s | 공백, 탭 | |
\S | 공백, 탭이 아닌 문자 | |
\w | 알파벳 대소문자+숫자+"_" [a-zA-Z_0-9]와 동일 |
|
\W | \w의 부정 [^a-zA-Z_0-9] |
정규식 수량 기호
기호 | 설명 | 예제 |
? | 앞의 표현식이 없거나 or 최대 한개만 | a1? : 1이 최대 한개만 있거나 없을수도 있다 → a(o), a1(o), a11(x), a111(x) |
* | 앞의 표현식이 없거나 or 있거나 (여러개) | a1* : 1이 있을수도 없을수도 있다 → a(o), a1(o), a11(o), a111(o) |
+ | 앞의 표현식이 1개 이상 or 여러개 | a1+ : 1이 1개 이상있다 → a(x), a1(o), a11(o), a111(o) |
{n} | 딱 n개 있다 | a{3} : a가 딱 3개 있다 → aa(x), aaa(o), aaaa(x), aaaaaaa(x) |
{n, m} | n개 이상 m개 이하 | a{3,5} : a가 3개 이상 5개 이하 있다 → aa(x), aaa(o), aaaa(o), aaaaaaa(x) |
{n,} | n개 이상 | a{3,} : a가 3개 이상 있다 → aa(x), aaa(o), aaaa(o), aaaaaaa(o) |
정규식 그룹 캡쳐 기호
기호 | 설명 |
() | 그룹 및 캡쳐 |
(?:) | 찾지만 그룹에 포함 안됨 |
(?=) | =앞 문자를 기준으로 전방 탐색 |
(?<=) | =뒤 문자를 기준으로 후방 탐색 |
자주 사용되는 정규식 샘플
정규 표현식 | 설명 |
^[0-9]*$ | 숫자 |
^[a-zA-Z]*$ | 영문자 |
^[가-힣]*$ | 한글 |
\\w+@\\w+\\.\\w+(\\.\\w+)? | |
^\d{2,3}-\d{3,4}-\d{4}$ | 전화번호 |
^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$ | 휴대전화번호 |
\d{6} \- [1-4]\d{6} | 주민등록번호 |
^\d{3}-\d{2}$ | 우편번호 |
출처: https://inpa.tistory.com/entry/JAVA-☕-정규식Regular-Expression-사용법-정리 [Inpa Dev 👨💻:티스토리]
String 정규식 메서드 | 설명 |
boolean matches(String regex) | 인자로 주어진 정규식에 매칭되는 값이 있는지 확인 |
String s = "1";
boolean matches = s.matches("^[0-9]$"); // true , 0-9 까지 일치하는 문자가 하나인지 확인
s = "11";
matches = s.matches("^[0-9]$"); // false
전체 문자열이 숫자로만 이루어졌는지 확인하고 싶다면?
(0-9 문자열과 일치하는지, 일치하는 경우 길이가 1 이상인지)
String s = "1";
boolean matches = s.matches("^[0-9]+$"); // true
s = "11";
matches = s.matches("^[0-9]+$"); // true
숫자로만 이루어진 문자열의 길이가 2 인지?
String s = "1";
boolean matches = s.matches("^[0-9]{2}$"); // false
s = "11";
matches = s.matches("^[0-9]{2}$"); // true
숫자로만 이루어진 문자열의 길이가 2 이상인지?
boolean matches = s.matches("^[0-9]{2,}$"); // true
s = "111";
matches = s.matches("^[0-9]{2,}$"); // true
String regex = "^[0-9]{1,3}$"; // 숫자 1~3개 매치
- 숫자와 영문자로 이루어진 경우
- [] 괄호 안에 문자가 있는지를 확인한다.
- + 앞의 표현식이 하나이상 있다.
String s = "123abcA";
boolean matches = s.matches("^[0-9a-z]+$"); // true
특수문자 포함 경우
String s = "123abcA#@";
boolean matches = s.matches("^[0-9a-zA-Z#@]+$"); // true
'JAVA' 카테고리의 다른 글
중첩 클래스, 내부 클래스 2 (1) | 2024.12.24 |
---|---|
중첩 클래스, 내부 클래스 1 (0) | 2024.12.23 |
[JAVA] 리플렉션 (2) | 2024.11.27 |
[JAVA] 자원 정리 (try-catch , try-with-resources) 2 (1) | 2024.11.26 |
[JAVA] 자원 정리 (try-catch , try-with-resources) (0) | 2024.11.26 |