Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Node
- next #middleware
- AWS
- 제일 작은 수 제거하기
- axios
- elasticIP
- 코딩테스트
- max_allowed_packet
- 부족한 금액 계산하기
- .env
- reacts3
- react
- s3확장자
- 프리티어
- utf8mb4
- interactive_timeout
- vscode
- useReducer
- 리액트코드정렬
- 자동완성방지
- MySQL
- express
- 리액트
- 커밋 한번에
- prettier
- 코드정렬
- 자연수 뒤집어 배열로 만들기
- dotenv
- EC2
- 프로그래머스
Archives
- Today
- Total
Sungtt
RegExp 정규표현식 해석해보기 [비밀번호] 본문
개요
비밀번호가 주어진 양식에 맞는지 체크하기위한 정규표현식을 사용한다.
완성되있는 코드가 어떤 원리로 작동하는지 분석한다.
주어진 양식
영문,특수문자,숫자가 포함된 최소 8글자 최대 25글자여야 합니다.
const passwordRegex = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/;
분석
제일 바깥엔 정규표현식 리터럴인 슬래시( / )로 감싸져있다.
그리고 괄호가 크게 3개로 나뉘어져고 안에 문자열을 보아
각 영문,특수문자,숫자에 대한 패턴 검색임을 추측할 수 있다.
정규표현식에 나온 각 특수문자에 대한 기능을 알아보자.
특수문자 | 예시 | 설명 |
소괄호 () | a(b)c | 전체 패턴을 검색한 후에 괄호안에 명시된 문자열을 저장해준다("abc"를 찾으면 b를 저장) |
중괄호 {} | {n} | 앞의 문자가 정확히 n번 나타나는 경우를 검색함 n은 반드시 양의정수이어야 한다. |
중괄호와 쉼표 { , } | {n,m} | 앞의 문자가 최소 m번 이상 최대 n번 이하로 나타나는 경우를 검색함. 반드시 양의 정수이어야 한다. |
대괄호 [] | [abc] | 대괄호안에 명시된 문자를 검색한다. |
대괄호와 하이픈 [ - ] | [0-9] | 대괄호안에 명시된 숫자를 검색한다. |
캐럿 ^ | ^a | 단어의 맨 앞에 위치한 해당 패턴만을 검색함 |
달러샤인 $ | a$ | 단어의 맨 뒤에 위치한 해당 패턴만을 검색함 |
아스테리스크 * | n* | 바로 앞의 문자가 0번 이상 나타나는 경우를 검색함 |
물음표 ? | n? | 바로 앞의 문자가 0번 또는 1번만 나타나는 경우를 검색함 |
물음표와 등호 ?= | ?= (?=n) |
긍정형 전방탐색이라고 한다. 패턴과 일치하지만 값으로 리턴하지않는 패턴 검색이다. (n이 들어간 문자열을 찾지만 n을 리턴하진않는다.) |
피리어드 . | . | 모든 문자열(단 줄바꿈 X) |
(?=.*[a-zA-Z])
모든문자열(.)중에 0번 이상 반복되는(*) 영문이 들어간것을 검색[a-zA-Z]하고,
반환하지는 않는다(?=)
^가 앞에있고, 괄호 3개뒤에 .이 있기때문에 모든문자열에 3개의 그룹패턴이 있어야만 일치한다는 의미다.
즉 모든 문자열에 3개그룹의 패턴을 검색하여 일치시킨다!
그리고 그중에서 {8,25}$ 모든문자열의 끝에서 최소 8에서 25개의 문자로 이루어진것을 일치시킨다!
끝에 $가 없으면 25개가 넘어가도 25개까지의 문자는 일치시키기때문에
비밀번호에 30자를 입력해도 일치한다고 인식합니다.
이렇게 가입하게되면 이용자는 30자를 넣었지만 25자까지만 비밀번호를 전송하게되겠죠?
/^ 내 앞에 있는 문자열들을 찾을거야
(?=.*[a-zA-Z]) 나는 모든 문자열중에 a-z와 일치하는 아이를 찾는 패턴이야
.{8,25}$ ^가 정해준 패턴들을 모든 문자열에서 찾고, 최소 8글자 최대 25글자인 애를 찾을거야
'JavaScript' 카테고리의 다른 글
양수와 음수 구분하기 (0) | 2022.08.02 |
---|---|
랜덤 숫자 생성 참고 사이트 (0) | 2022.07.31 |
7. 문자열 변환 replace, replaceAll, substring (0) | 2022.03.13 |
6. 이벤트 핸들러의 방식 (0) | 2022.01.08 |
5. data어트리뷰트와 dataset프로퍼티 (0) | 2022.01.07 |
Comments