일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CSS
- 백엔드
- 삶
- 개발
- 기획
- 대학졸업
- Next.js
- 프론트엔드
- 신입 개발자
- 계획
- 공부
- 구상
- 개인프로젝트
- Next.js 13
- 개발자 이력서
- 이력서
- 캐플라이어
- 신입 프론트엔드
- 회고
- 신입 이력서
- react
- aws s3
- 신입
- 개인 프로젝트
- TypeScript
- MONGOOSE
- Javascript
- s3 bucket
- Today
- Total
개발 마라톤
10/1 - 커스텀 훅 본문

정규식 사용
이번에 회원가입 정보입력 란에 정규식을 포함해야하기 때문에 정규식에 대하여 찾아보았다.
백엔드 부분에서도 정규식을 포함시킬 수 있으나, 우선은 프론트 단에서 진행시키기로 하였다.
( 나중에 적용된 정규식 표현을 가져가서 백엔드에서 사용 가능 )
정규 표현식 - JavaScript | MDN (mozilla.org)
정규 표현식 - JavaScript | MDN
정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다. JavaScript에서는 정규 표현식도 객체로서, RegExp의 exec() (en-US)와 test() 메서드를 사용할 수 있습니다. String의 match()
developer.mozilla.org
정규식의 기초적인 내용은 위의 MDN 문서에 잘 정리되어있다.
윗 문서의 내용을 기준으로 아랫 글에서 제시한 정규식을 해석해보려고 한다.
[javascript] 이메일 주소 검증 스크립트 정규표현식 [펌] (tistory.com)
[javascript] 이메일 주소 검증 스크립트 정규표현식 [펌]
[javascript] 이메일 주소 검증 스크립트 정규표현식 [펌] 자바스크립트의 정규표현식은 프로그래밍 언어가 가지는 가장 큰 기능중 하나입니다. 오늘은 정규표현식을 사용하여 이메일을 검증하는
solbel.tistory.com
verifyEmail = function() {
// 이메일 검증 스크립트 작성
var emailVal = $("#email").val();
var regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
// 검증에 사용할 정규식 변수 regExp에 저장
if (emailVal.match(regExp) != null) {
alert('Good!');
}
else {
alert('Error');
}
};
MDN 문서에서는 바뀔 일이 없는 패턴의 경우 리터럴을 사용하면 성능이 향상될 수 있다고 명시한다.
주어진 예시에서는 정규식 패턴이 런타임 중에 바뀔일이 없으므로, 정규식 리터럴을 사용했음을 알 수 있다.
더 자세히 정규식 부분을 살켜보자.
var regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
코드 | 내용 |
슬래시 ( / / ) | 슬래시는 정규식 리터럴의 시작과 끝을 의미한다. |
^[0-9a-zA-Z] | ^는 시작 부분 일치를 검사한다. 시작 부분이 [0-9a-zA-Z] 여야 통과할 수 있음. |
대괄호 [] | []는 하나의 문자가 정규식에 맞는지를 검사한다. |
소괄호 () | ()는 괄호 내용을 하나의 그룹으로 묶는다. $1 등으로 호출 할 수 있다. |
물음표 [-_·]? | ?는 수령자로, 앞 내용이 0번 또는 1번 일치하는지 검사한다. [-_·]의 내용이 0번 또는 1번 나타나야 함. |
별표 * | 앞의 내용이 0번 이상 나타날 수 있음을 의미한다. |
일반문자 @, . 등 | 일반 문자가 나타나면 정확히 일치함을 의미한다. 이메일에서 @와 .은 정확히 존재해야 함. |
중괄호 {n, m} | {}는 한정자로, 앞 내용이 최소 n번, 최대m번 나타날 수 있음을 의미한다. {2, 3}으로 .kr .com 등을 검사하기 위함. |
달러표시 $ | $는 검사하는 문자열의 끝까지 포함하여, 해당 정규식을 검사하도록 한다. |
/i | /i는 정규식 플래그로, 대소문자를 구분하지 않도록 한다. |
커스텀 훅
커스텀 훅은 tsx 형태로, useEffect와 같은 다른 React 훅을 응용하여 원하는 작업을 함수처럼 묶어둘 수 있다.
커스텀 훅과 일반 유틸 함수의 다른점은 다음과 같다.
1. 상태 값과 같은 React 변수를 사용하는데에 사용할 수 있다.
React 상태 등을 생성하거나 다루는 함수는 기존 자바스크립트의 함수로는 다루지 못하므로, 커스텀 훅을 만들어 사용할 수 있다.
2. 생명 주기에 따라 작동된다.
커스텀 훅은 useEffect와 그 속의 클린업 코드를 이용하여, 2번 이상의 호출에 대한 작업의 처리도 수행시킬 수 있다.
3. 사용 컴포넌트가 같으면 같은 변수 값을 공유한다.
커스텀 훅은 일반 함수와 다르게, 호출마다 함수가 새로운 값을 가지지 않을 수 있다.
즉, 같은 컴포넌트에서 같은 훅을 호출했다면, 해당 훅의 상태 값 등이 같은 컴포넌트 내에서 어디에서 호출되었든 같은 값을 같도록 구성된다.
이러한 원리를 이용하여, 같은 Timer를 공유하고 독립적이고 연속적인 작업이지만 같은 내용의 체크가 필요한 디바운싱 같은 함수를 작성하는데 용이하다.
결론적으로 React의 커스텀 훅 함수는 React 만의 고유 개념인 상태나 생명 주기 등과 관련되어야 할 때, 사용할 수 있다.
'--- Project --- > CharFlyer : 캐플라이어' 카테고리의 다른 글
[개발] Next.js 13에서 Amazon S3만을 이용한 이미지 업로드 (0) | 2023.10.11 |
---|---|
[회고] 캐플라이어 중간 회고 (2) | 2023.10.10 |
9/28 - useState와 useRef (0) | 2023.09.28 |
9/26 - Next.js 페이지 라우팅 (0) | 2023.09.26 |
9/25 - margin : auto (0) | 2023.09.25 |