정규표현식

2024. 7. 10. 14:59·Java

문자열이 정해져 있는 형식으로 구성되어 있는지 검증해야 하는 경우가 있다.

예를 들어 이메일이나 전화번호를 사용자가 제대로 입력했는지 검증할 때 이다.

자바 정규표현식(Regular Expression)을 이용해서 문자열이 올바르게 구성되어 있는지 검증할 수 있다.

기호 설명
. 임의의 단일 문자 (개행 문자를 제외한 모든 문자)
^ 문자열의 시작
$ 문자열의 끝
* 0회 이상 반복 (전의 문자가 0번 이상 반복)
+ 1회 이상 반복 (전의 문자가 1번 이상 반복)
? 0회 또는 1회 반복 (전의 문자가 0번 또는 1번 나타남)
` `
[] 문자의 집합 또는 범위 (e.g., [a-z]는 소문자 알파벳 a부터 z까지 중 하나)
[^] NOT 연산 (e.g., [^a-z]는 소문자 알파벳이 아닌 문자)
() 그룹화 (하나의 단위로 묶어서 서브패턴을 형성)
{n} 정확히 n회 반복
{n,} 최소 n회 반복
{n,m} 최소 n회, 최대 m회 반복
\d 숫자 문자 ([0-9]와 동일)
\D 숫자 문자가 아닌 것 ([^0-9]와 동일)
\w 단어 문자 (알파벳 대소문자, 숫자, 밑줄)
\W 단어 문자가 아닌 것 ([^\w]와 동일)
\s 공백 문자 (스페이스, 탭, 개행 등)
\S 공백 문자가 아닌 것 ([^\s]와 동일)
\b 단어 경계
\B 단어 경계가 아님
\ 이스케이프 문자 (특수 문자를 문자 그대로 사용할 때)

 

 

(02|010)-\d{3,4}-\d{4}

 

02-123-1234 또는 010-1234-5678 같은 전화번호를 위한 정규표현식

 

\w+@\w+\.\w+(\.\w+)?

 

white@naver.com 같은 이메일을 위한 정규표현식

 

\.와 .은 다르다. \.은 문자로서의 점(.)을 말하지만 .은 모든 문자 중에서 한개의 문자를 뜻한다.

 

Pattern 클래스로 검증

java.util.regex 패키지의 Pattern 클래스는 정규표현식으로 문자열을 검증하는 matches() 메서드를 제공한다.

첫번째 매개값은 정규 표현식이고, 두번째는 검증할 문자이다. 검증한 후 결과를 boolean 타입으로 리턴한다.

 

package ch12.sec10;

import java.util.regex.Pattern;

public class PatternEx {
    public static void main(String[] args) {
        String regExp = "(02|010)-\\d{3,4}-\\d{4}";
        String data = "010-123-4567";

        boolean result = Pattern.matches(regExp, data);
        if (result) {
            System.out.println("정규식과 일치");
        } else {
            System.out.println("정규식 불일치");
        }

        regExp = "\\w+@\\w+\\.\\w+(\\.\\w+)?";
        data = "angel@mycompanycom";
        result = Pattern.matches(regExp, data);
        if (result) {
            System.out.println("정규식 일치");
        } else {
            System.out.println("정규식 불일치");
        }
    }
}

'Java' 카테고리의 다른 글

제네릭 (Generic)  (0) 2024.07.10
어노테이션  (0) 2024.07.10
래퍼 (wrapper) 클래스  (0) 2024.07.10
롬복 (Lombok)  (0) 2024.07.09
레코드 선언  (1) 2024.07.09
'Java' 카테고리의 다른 글
  • 제네릭 (Generic)
  • 어노테이션
  • 래퍼 (wrapper) 클래스
  • 롬복 (Lombok)
공부처음하는사람
공부처음하는사람
  • 공부처음하는사람
    lazzzykim
    공부처음하는사람
  • 전체
    오늘
    어제
    • 분류 전체보기 (129)
      • Kotlin (31)
      • Java (55)
      • Spring (20)
      • Algorithm (3)
      • TroubleShooting (1)
      • 내일배움캠프 프로젝트 (14)
      • Setting (2)
      • ... (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 인기 글

  • 태그

    제네릭
    생성자 주입
    spring
    김영한의 실전자바
    내일배움캠프
    중첩클래스
    kotlin
    래퍼클래스
    OCP
    배열
    언체크예외
    Di
    빈 생명주기
    김영한
    다형성
    싱글톤
    java
    김영한의 실전 자바
    캡슐화
    @Component
  • hELLO· Designed By정상우.v4.10.3
공부처음하는사람
정규표현식
상단으로

티스토리툴바