반응형
오늘 정규 표현식 질문을 받다가 알게된 놀라운 사실!
만약 예를 들어서 비밀번호를 검증한다고 했을 때, 영소문자 1개 이상, 영대문자 1개 이상, 숫자 1개 이상, 지정된 특수문자 1개 이상 각각을 꼭 포함해야 한다고 가정하자.
그러면 그냥 /^[a-zA-Z0-9@#$%^&+=]{1, 30}$/ 라고만 하면, 이 안에 있는 모든 문자가 들어가도 상관없지만, 영소문자만으로 채워도 통과가 된다.
그래서 소문자, 대문자, 숫자, 특수문자 각각을 모두 포함하는지를 확인할 수 있어야 하는데 그게 앞에 붙은 소괄호이다.
(?=.*[a-z]) 를 하나하나 봐보자면,
(?= ... ) : 결과에 포함되지 않고, 이 이후에 나오는 표현식을 매칭시킨다. (그러니까 (...) 이후에 나오는, [...] 부분을 매칭을 시킴)
. : 줄넘김이 없을 때까지 어느 문자를 매칭시킨다.
* : 0이상을 매칭시킨다.
[a-z] : 영소문자.
따라서 위의 조건에 따른 정규 표현식은 다음과 같다.
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@#$%^&+=])[a-zA-Z0-9@#$%^&+=]{1,30}$
반응형
'TIL ✍️' 카테고리의 다른 글
23년 12월 14일(목요일) - 52번째 TIL (0) | 2023.12.14 |
---|---|
23년 12월 13일(수요일) - 51번째 TIL (1) | 2023.12.13 |
23년 12월 8일(금요일) - 48번째 TIL : intellij file encoding change (0) | 2023.12.08 |
23년 12월 7일(목요일) - 47번째 TIL (0) | 2023.12.07 |
23년 12월 6일(수요일) - 46번째 TIL (0) | 2023.12.06 |