[BE] 정규표현식 (Regular Expression) - woowacourse-teams/2021-zzimkkong GitHub Wiki
- MemberSaveRequestDto에서 비밀번호와 조직명 입력값을 검증하기 위해서 사용
비밀번호
- (필수) 영어 + 숫자 8자 이상, (선택) 특수문자 입력가능
@NotBlank(message = "비밀번호는 공백일 수 없습니다")
@Pattern(regexp = "^(?=.*[a-zA-Z])(?=.*[0-9]).{8,20}$", message = "비밀번호는 영어와 숫자를 포함해서 8자 이상 20자 이내로 입력해주세요")
private String password;
- ^ : 문자열의 시작을 나타냄
- $ : 문자열의 끝을 나타냄
- ?= : 전방탐색(lookahead)패턴, 일치 영역을 발견해도 그 값을 반환하지 않는 패턴
// 예시
http://www.forta.com
https://mail.forta.com
ftp://ftp.forta.com
// 정규 표현식
.+(?=:)
// 결과
http:
https:
ftp:
- .* : any character zero or more times
- [0-9] : 0에서 9까지의 숫자
- [a-zA-Z] : a에서 z까지의 대소문자 알파벳
- {8, 20} : 8자에서 20자 사이
조직명
- 조직명 : 1자 이상, 특수문자 일부 허용([ - , _ , !, ?, ., , ])
@NotBlank(message = "조직명은 공백일 수 없습니다")
@Pattern(regexp = "^[-_!?.,a-zA-Z0-9가-힣ㄱ-ㅎㅏ-ㅣ]{1,20}$", message = "조직명은 특수문자(-_!?.,)를 포함하여 20자 이내로 작성 가능합니다")
private String organization;
- [-_!?.,a-zA-Z0-9가-힣ㄱ-ㅎㅏ-ㅣ] : 가능한 특수문자 + 모든 알파벳 + 모든 숫자 + 모든 한글
- {1, 20} : 1자에서 20자 사이
Regex test site
References
https://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean/22944075#22944075
https://mkyong.com/tutorials/java-regular-expression-tutorials/