본문 바로가기
Java

java 비밀번호 정규식 패턴 - 숫자,문자,특수문자 포함

by ZEC 2021. 1. 17.

java 비밀번호 정규식 패턴


안녕하세요:)

오늘은 비밀번호 로직을 만들 때 많이 사용하는 정규식 패턴에 대해 공부하도록 해요!

 

정규표현식 (정규식 패턴) 이란?

정규표현식(정규식 패턴) 은 문자열을 처리하는 방법 중에서 특정 조건의 문자를 검색하거나 치환하는 과정을

매우 간편하게 사용할 수 있도록 하는 수단입니다.

기본적인 표현식 (더 많은 표현이 있습니다.)

표현식 설명
^ 문자열의 시작
$ 문자열의 끝
. 임의의 문자
* 앞 문자가 없을 수도 무한정 많을 수도 있음
+ 앞 문자가 하나 이상
? 앞 문자가 없을 수도 있고 하나 있음
\s 공백문자
\S 공백이 아닌 문자
\w 알파벳이나 숫자
\W 알파벳이나 숫자를 제외한 문자
\d 숫자만
\D 숫자를 제외한 문자
\ 역슬래시 다음에 문자가 오면 특수문자 취급
[ ] 문자의 집합이나 범위 [] 안에서 ^기호로 시작되면 not 을 나타냄 ! 기호라고 생각하자!
{ } 횟수나 범위
( ) 그룹지정
| or조건

정규표현식 (정규식 패턴) 왜 쓸까?

정말 궁금한 건 왜 정규식을 사용할까 라고 궁금하신 분들이 계실 겁니다

예를 들어 우리가 사용자가 회원가입 시 보안을 위해 비밀번호에 특정한 조건을 넣고 싶다고

가정해봅시다.

 

  • 반드시 (8자리 이상이며 최대 16자까지 허용/ 숫자, 문자, 특수문자가 포함되어야 한다.)

이런 까다로운 조건문을 코드로 구현한다면 길어지는 건 물론이고 실수가 반드시 생긴다는 거죠

정규식을 비밀번호 패턴 말고도 크롤링을 할 때도 정말 많이 사용합니다. "제목:"이라고 시작하는

문구 다음에 있는 문자를 긁어올 때 등등 말이죠.

본론으로 들어가시죠

위에 제가 정의했던 조건으로 정규식 패턴을 만들어볼 건데요

우선 필자는 정규식 패턴을 테스트하거나 만들 때 아래 사이트를 많이 이용합니다.

 

 

Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript

Please wait while the app is loading...

regex101.com

주의사항으로는 정규식은 프로그래밍 언어마다 해석이 다르기 때문에 사용할 언어 환경에서

반드시 테스트가 필요합니다. 무작정 가져다 쓰지 말라는 얘깁니다 :)

 

 //'숫자', '문자', '특수문자' 무조건 1개 이상, 비밀번호 '최소 8자에서 최대 16자'까지 허용
 //(특수문자는 정의된 특수문자만 사용 가능)

 ^(?=.*[A-Za-z])(?=.*\d)(?=.*[~!@#$%^&*()+|=])[A-Za-z\d~!@#$%^&*()+|=]{8,16}$

 //'숫자', '문자' 무조건 1개 이상, '최소 8자에서 최대 20자' 허용
 //(특수문자는 정의된 특수문자만 사용 가능)

 ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d~!@#$%^&*()+|=]{8,20}$

댓글