[java]정규식 (Regular Expression)

2024. 8. 17. 17:40·JAVA

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
'JAVA' 카테고리의 다른 글
  • [java]Constructor, Override
  • [java]ArrayList (자동배열)로 성적 입력 프로그램 만들기
  • [java] String 함수 총정리
  • [java] 주민등록번호, 사업자 등록번호 유효성 검사
라텐느
라텐느
이제 막 개발을 시작한 초보가 개인공부를 하는 공간입니다.
  • 라텐느
    괴발개발
    라텐느
    • 개발자 (154)
      • HTML|CSS (14)
      • JAVA (29)
      • JAVACSCRIPT (15)
      • SQL (16)
      • 기타 (5)
      • JSP (2)
      • SPRING (13)
      • SPRING BOOT (6)
      • Git&GitHub (1)
      • 시행착오 (2)
      • 개발일지 (35)
        • GreenMiniProject1 (12)
        • GreenMiniProject2 (9)
        • GreenFinalProject (14)
      • Flutter (5)
      • 자격증 (0)
        • SQLD (1)
      • AWS (2)
      • Linux (1)
      • 자료구조&알고리즘 (4)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 태그
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    tag
    db
    링크
    티스토리챌린지
    link
    JS
    HTML
    자기계발
    javascript
    JQuery
    input
    부트캠프
    태그
    오블완
    java
    개발자
    AJAX
    CSS
    SQL
    일지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
라텐느
[java]정규식 (Regular Expression)
상단으로

티스토리툴바