RegExp
회원가입 처리할 때 유효성검사가 필요한 일이 생겼다. 근데 나는 정규식을 모른다. 그래서 인터넷에서 가져다 붙여넣으려고 좀 찾아봤다.
괜히 찾아봤다. 다른 허점은 고려하지 않은 채로 대충 몇 번 조회 때려보고 OK 뜨니까 되는구나 싶어서 올렸거나, 가독성이 너무 떨어져 튜닝이 어려운 쓰잘데기 없이 복잡한 정규식들이 많았다.
그래서 내가 정말 짧은 시간을 공부하고 정규식 규칙을 짜봤다.
참고로 너무 조금 공부한 채로 짠거라 허점이 있을 수 있다. 아이러니하게도 잘못된 정보를 피해 얄팍한 지식으로 잘못된 식을 짜 본 것일 수도 있는 것이다. 이거에 허점이 있으면.. 받아들여야지. 지적 부탁드립니다. 더 효율적인 정규식이 있다면 그것도 추천 해주세요. 감사합니다. 땡큐.
1. 아이디 정책
- 3자 이상 16자 이하, 영어 또는 숫자로 구성
* 특이사항 : 대소문자 상관없이 toLowerCase()로 변환시켜 데이터베이스에 삽입하기 때문에 대문자 비교는 없다.
^(?=.*[a-z0-9])[a-z0-9]{3,16}$
2. 닉네임 정책
- 2자 이상 16자 이하, 영어 또는 숫자 또는 한글로 구성
* 특이사항 : 한글 초성 및 모음은 허가하지 않는다.
^(?=.*[a-z0-9가-힣])[a-z0-9가-힣]{2,16}$
3. 비밀번호 정책
- 6자 이상 16자 이하, 영어와 숫자의 조합으로 구성
* 특이사항 : . _ -를 포함한 특수문자도 같이 허용해준다.
^(?=.*[0-9])(?=.*[a-zA-Z])[a-zA-Z0-9!@#$%^&*()._-]{6,16}$
정규식 생각보다 어렵다..
'내가 배운 것들 > 문제 해결' 카테고리의 다른 글
[SpringBoot/Redis/Ubuntu] 우분투 환경에 Redis 설치, SpringBoot에 세팅 (0) | 2021.12.27 |
---|---|
[SpringBoot] DTO 형식으로 반환해줄 때, NULL값은 숨긴 채로 되돌려주기 (0) | 2021.12.23 |
[QueryDSL/MySQL] QueryDSL로 MySQL에서 랜덤한 레코드 가져오기 (0) | 2021.12.22 |
[QueryDSL] Handler dispatch failed; nested exception is java.lang.NoSuchFieldError: TREATED_PATH (0) | 2021.12.22 |
[SpringBoot] Swagger v2를 Jwt 인증 환경에서 사용할 수 있도록 구성하기 (0) | 2021.12.11 |
댓글