220919 @Valid와 정규식을 활용한 유효성 검증

Jongleee·2022년 9월 19일
1

TIL

목록 보기
57/576

@Valid와 정규식을 활용한 유효성 검증

문법 종류

^      : 시작
$       : 종료
[범위] : 문자 범위 (범위에 해당하는 문자 하나)
.        : 문자 (공백, 숫자, 영문, 특문 등 의 문자 하나)
(?=  ) : 긍정형 전방탐색 (positive lookahead) ; 일치하는 문자가 있으면 값이 아닌 인덱스를 반환

문자 길이

?   : 0 또는 1회
*   : 0회 이상
+   : 1회 이상
{n}   : n회  
{n, }   : n회 이상
{n, m} : n회 이상, m회 이하

코드

@NotBlank
@Pattern(regexp = "^(?=.*[a-zA-Z])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{10,20}$|^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{10,20}$|^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9!@#$%^&*]{10,20}$",
        message = "10~20 자리 이내 영문, 숫자, 특수문자 중 2종류 이상 조합")
private String password;

()는 조건문으로 검사를 통과하면 인덱스를 반환하고 통과하지 못하면 매칭 실패처리가 됨

(?=.*[])는 []내부에 있는 문자의 인덱스를 0으로 반환함

  • 이는, 전방탐색을 여러개 사용할 경우에는 인덱스가 반환되면 뒤의 전방 탐색에도 영향을 주기 때문

|는 or과 같은 역할

조건문 뒤의 []{10,20]은 조건문이 10자-20자이며, []내부의 문자로 이루어져야 한다는 것을 의미함

각 조건의 시작과 끝의 ^$를 통해 조건에 완전히 일치할때만 통과하도록 설정함

0개의 댓글