20240813수업
RegEx 표현식
한정자
규정자 | 일치 |
* | 이전 문자 또는 시퀀스의 0개이상의 일치 항목입니다. |
? | 0또는 1은 이전 문자 또는 시퀀스와 일치합니다. |
+ | 이전 문자 또는 시퀀스와 하나 이상 일치합니다. |
{N} | 이전 문자의 정확히 N개와 일치합니다. |
{N,} | 이전 문자와 N개 이상 일치합니다. |
{N,Z} | N개이상 Z개이하에서 이전 문자와 일치합니다. |
문자
문자 | 일치 |
. | 한 문자와 일치시킵니다. |
.* | 모든 항목과 일치합니다. |
\d | 1개의 단일 숫자와 일치합니다. |
\d* | N자리와 일치합니다. |
\D | 숫자를 제외한 모든 기호와 일치합니다. |
\w | 문자, 숫자 또는 밑줄과 일치합니다. |
\W | 문자, 숫자 또는 밑줄이 아닌 문자와 일치합니다. |
\s | 공백 문자와 일치합니다. |
\S | 공백, 탭, 줄 바꾸기 또는 캐리지 리턴을 제외한 모든 문자와 일치합니다. |
\s* | N개의 공백 문자와 일치합니다. |
\S | 공백이 아닌 문자와 일치합니다. |
\S* | 공백이 아닌 N 문자와 일치합니다. |
고착화
고정 | 일치 |
\b | 공백, 탭, ",", "/" 등을 의미합니다. |
^ | 문자열 또는 행의 시작과 일치합니다. |
$ | 문자열 또는 행의 끝과 일치합니다. |
그룹화
그룹화 | 일치 |
[ ] | 문자 그룹을 나타냅니다. |
( ) | 패턴을 그룹화하는 데 사용됩니다. |
[abcd...] | 대괄호 안에 포함된 문자 중 1자와 일치합니다. |
[a-z] | a-z 범위의 1자와 일치합니다. |
[^a-z] | a-z 범위에 있지 않은 1자와 일치합니다. |
[....]+ | 대괄호 안에 나열된 문자 중 하나 이상의 문자와 일치합니다. |
[....]? | 대괄호 안에 나열된 1자 또는 0자와 일치합니다. |
[^"]* | 큰따옴표를 제외한 N 문자와 일치합니다. |
[^"\s]* | 큰따옴표 및 공백을 제외한 N 문자와 일치합니다. |
[^.]* | 0개이상의 점이 아닌 값과 일치합니다. |
(?:) | 찾지만 그룹에 포함 안됨 |
(?=) | 앞 문자를 기준으로 전방 탐색 |
(?<=) | 뒤 문자를 기준으로 후방 탐색 |
자주 쓰이는 정규식 예시
regExp = "정규식";
data = "입력 데이터";
result = Pattern.matches(regExp, data);
⚠️자바의 문자열 안에 \는 반드시 \\로 표현해야한다
그렇지 않으면 \n - > enter키, \t-> tab키로 출력된다.
ex) java17버전에서는 자동으로 변환되긴한다.
\d{6}-[1234]\d{6}
>>"\\d{6}-[1234]\\d{6}"
c:\backup\test\n1\test1.txt
>>"c:\\backup\\test\\n1\\test1.txt"
휴대폰 전화번호
String regExp = "(051|010)-\\d{3,4}-\\d{4}"; //첫자리 051또는 010만 가능| 중간자리 3,4자리 허용| 마지막자리 10진수(decimal) 4자리 허용
//^01(0|1|[6-9])-(?:\\d{3}|\\d{4})-\\d{4}
String data = "010-3121-1234";
boolean result = Pattern.matches(regExp, data);
if(result)
System.out.println("정확한 전화번호 입력");
else
System.out.println("전화번호 잘못 입력하셨습니다");
이메일
(영문자,숫자,_만가능 @ 주소에는 영문자,숫자,_가능 중간에 .넣을 수 있음)
regExp = "\\w+@\\w+\\.\\w+(\\.\\w+)?";
//^[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-z]+$
data = "angel@naver.com";
result = Pattern.matches(regExp, data);
if(result)
System.out.println("정규식과 일치합니다");
else
System.out.println("정규식과 일치하지 않습니다");
아이디
(자리수 8-12, 특수문자x)
regExp = "[a-zA-Z0-9ㄱ-ㅎㅏ-ㅣ가-힣]{8,12}";
//^[a-zA-Z]{1}[a-zA-Z0-9_]{8,12}$
//^[a-z]{1}[a-z0-9]{8,12}+$
data = "rladbwls";
result = Pattern.matches(regExp, data);
if(result)
System.out.println("정규식과 일치합니다");
else
System.out.println("정규식과 일치하지 않습니다");
비밀번호
(자리수 8-12, 대문자1개이상, 특수문자1개이상, 영문자∙숫자로 구성 )
regExp = "(?=.*[A-Z])(?=.*[@$!%*?&])[a-z0-9]{8,12}";
//^(?=.*[a-zA-Z])((?=.*\\d)|(?=.*\\W)).{10,128}+$
//^(?=.*[a-zA-Z])(?=.*\\d)(?=.*\\W).{8,20}$
//^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
//^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,10}$
//^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,12}
data = " !a1b2c3d4f5";
result = Pattern.matches(regExp, data);
if(result)
System.out.println("정규식과 일치합니다");
else
System.out.println("정규식과 일치하지 않습니다");
주민등록번호
regExp = "^\\d{6}\\-[1-4]\\d{6}";
data = "000906-4095429";
result = Pattern.matches(regExp, data);
if(result)
System.out.println("정규식과 일치합니다");
else
System.out.println("정규식과 일치하지 않습니다");
regExp = "^[1-9]\\d{1}[1-9]\\-\\d{2}\\-\\d{3}[1-9]\\d{1}";
data = "496-88-01552";
result = Pattern.matches(regExp, data);
if(result)
System.out.println("정규식과 일치합니다");
else
System.out.println("정규식과 일치하지 않습니다");
'JAVA' 카테고리의 다른 글
[java]Constructor, Override (0) | 2024.08.18 |
---|---|
[java]ArrayList (자동배열)로 성적 입력 프로그램 만들기 (0) | 2024.08.18 |
[java] String 함수 총정리 (0) | 2024.08.15 |
[java] 주민등록번호, 사업자 등록번호 유효성 검사 (0) | 2024.08.15 |
[java]배열 (Array) (0) | 2024.08.13 |