[Java] 정규 표현식 Regular Expression

호호빵·2022년 11월 4일
0

Java

목록 보기
13/19

정규표현식(Regular Expression)

  • 문자열에 어떤 패턴의 문자들이 있는지 찾는데에 도움을 줌
  • 데이터 검증(주민번호, 휴대폰 번호 등)에 사용됨

Metacharacters

  • Regex의 패턴에서 어떤 문자가 특별한 의미를 갖는 것
    예) \d는 0에서 9사이의 숫자를 의미합니다.
표현식의미
^x문자열의 시작, x문자로 시작됨을 의미
x$문자열의 종료, x문자로 종료됨을 의미
.x임의의 한 문자, 문자열이 x로 끝남(" 는 넣을 수 없음)
x*반복 표현, x문자가 0번 혹은 그 이상 반복됨
x+반복 표현, x문자가 한번 이상 반복됨
x?존재여부 표현, x문자가 존재하거나 하지않을 수 있음
x|yor 표현, x또는 y가 존재함을 의미
[ ]문자의 집합이나 범위 표현, ^ = not 의미[^0-9a-z-_.] : 0-9, a-z, - _ . 이 아니어야 한다.
( )그룹 표현, 괄호안의 문자를 하나의 문자로 인식
x{n}반복 표현, x문자가 n번 반복됨
x{,n}반복 표현, x문자가 n번 이상 반복됨
x{n,m}반복 표현, x문자가 n번 이상 최대 m번 이하로 반복됨
\s공백 문자(whitespace) 1개[\t\n\x0b\r\f]와 동일
\S공백 문자가 아닌 나머지 문자
\wAlphanumeric(alphabet, 숫자)문자[a-zA-Z0-9]와 동일
\WAlphanumeric을 제외한 문자whitespace 등
\d0~9 사이의 숫자[0-9]와 동일
\D숫자를 제외한 모든 문자[^0-9]와 동일
\b단어의 경계를 찾음(공백)This is me 에서 is를 찾으려면 [\\bis\\b]
(?i)대소문자를 구분하지 않습니다.

Quantifiers

  • 요소들을 얼마나 반복시킬지 정의

Regular Expression Description

  • 0회 이상 반복
  • 1회 이상 반복
    ? 0 또는 1회만
    {X} X회 이상 반복
    {X,Y} X~Y 사이의 수만큼 반복
    *? 가장 적게 일치하는 패턴을 찾음
    예제

자주 사용하는 비밀번호 정규표현식

최소 8, 최소 하나의 문자 및 하나의 숫자 :
"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"


최소 8, 최소 하나의 문자, 하나의 숫자 및 하나의 특수 문자 :
"^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$"


최소 8, 대문자 하나 이상, 소문자 하나 및 숫자 하나 :
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"


최소 8, 대문자 하나 이상, 소문자 하나, 숫자 하나 및 특수 문자 하나 이상 :
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}"


최소 8 자 및 최대 10, 대문자 하나 이상, 소문자 하나, 숫자 하나 및 특수 문자 하나 이상 :
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,10}"




자바 정규 표현식
비밀번호 정규표현식

profile
하루에 한 개념씩

0개의 댓글

관련 채용 정보