java 비밀번호 정규식 패턴
안녕하세요:)
오늘은 비밀번호 로직을 만들 때 많이 사용하는 정규식 패턴에 대해 공부하도록 해요!
정규표현식 (정규식 패턴) 이란?
정규표현식(정규식 패턴) 은 문자열을 처리하는 방법 중에서 특정 조건의 문자를 검색하거나 치환하는 과정을
매우 간편하게 사용할 수 있도록 하는 수단입니다.
기본적인 표현식 (더 많은 표현이 있습니다.)
표현식 | 설명 |
^ | 문자열의 시작 |
$ | 문자열의 끝 |
. | 임의의 문자 |
* | 앞 문자가 없을 수도 무한정 많을 수도 있음 |
+ | 앞 문자가 하나 이상 |
? | 앞 문자가 없을 수도 있고 하나 있음 |
\s | 공백문자 |
\S | 공백이 아닌 문자 |
\w | 알파벳이나 숫자 |
\W | 알파벳이나 숫자를 제외한 문자 |
\d | 숫자만 |
\D | 숫자를 제외한 문자 |
\ | 역슬래시 다음에 문자가 오면 특수문자 취급 |
[ ] | 문자의 집합이나 범위 [] 안에서 ^기호로 시작되면 not 을 나타냄 ! 기호라고 생각하자! |
{ } | 횟수나 범위 |
( ) | 그룹지정 |
| | or조건 |
정규표현식 (정규식 패턴) 왜 쓸까?
정말 궁금한 건 왜 정규식을 사용할까 라고 궁금하신 분들이 계실 겁니다
예를 들어 우리가 사용자가 회원가입 시 보안을 위해 비밀번호에 특정한 조건을 넣고 싶다고
가정해봅시다.
- 반드시 (8자리 이상이며 최대 16자까지 허용/ 숫자, 문자, 특수문자가 포함되어야 한다.)
이런 까다로운 조건문을 코드로 구현한다면 길어지는 건 물론이고 실수가 반드시 생긴다는 거죠
정규식을 비밀번호 패턴 말고도 크롤링을 할 때도 정말 많이 사용합니다. "제목:"이라고 시작하는
문구 다음에 있는 문자를 긁어올 때 등등 말이죠.
본론으로 들어가시죠
위에 제가 정의했던 조건으로 정규식 패턴을 만들어볼 건데요
우선 필자는 정규식 패턴을 테스트하거나 만들 때 아래 사이트를 많이 이용합니다.
주의사항으로는 정규식은 프로그래밍 언어마다 해석이 다르기 때문에 사용할 언어 환경에서
반드시 테스트가 필요합니다. 무작정 가져다 쓰지 말라는 얘깁니다 :)
//'숫자', '문자', '특수문자' 무조건 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}$
댓글