[TIL] 정규식

이현동·2023년 1월 14일
0

TIL

목록 보기
5/59
post-custom-banner

사전 OT 주차가 종료되고 다음주에 있을 풀스택미니프로젝트와 언어학습에 대비해서 Javascript의 기초강의?를 들어보고 있다.. 같은 조원 분의 추천으로 코딩애플의 강의를 듣고 있는데 설명도 쉽게 해주시고 무엇보다 직접 코드를 작성해야하는 과제들이 나오는 것 같아 좋았다. 강의를 보면서 따라치는게 아닌 정의된 문제를 어떤 방식으로 해결해나가야할지 생각해 볼 수 있는 시간이 있어서 좋은 것 같다!

정규식이라는 개념을 이번 강의에서 처음 들어본 것 같다.. 🤔 로그인 관련 기능이나 회원가입을 할 때..? 유용하게 사용할 수 있을 것 같았다!

정규식이란?

우선 정규식이란 텍스트에서 어떤 문자가 있는지 검사할 때 동일한 문자를 모두 한번에 하나씩 입력하고 조회해 찾아볼 수 있지만, 조건이 복잡해지면 불편하게 될 수 있다. 이때 특정한 표현 규칙이나 기호를 활용해 다양한 규칙을 간단하게 정의할 수 있다.
즉, 표현 규칙은 특별한 문자가 무엇을 의미하는지 정하고, 반복 횟수 표현은 어떻게 할 것인지 등등을 정한 것이다.

정규식을 사용해 이메일검증, 비밀번호 검증 등등에 사용할 수 있다. 가령 비밀번호에 적어도 하나의 대문자와 특수문자 그리고 최소 8자 이상의 조건을 세울 때 정규식이 사용될 수 있다.

다양한 정규식 조건

정규식으로 간단하게 다양한 조건들을 이용할 수 있다..!

let number = pw.search(/[0-9]/g);
let english = pw.search(/[a-z]/ig);
let spece = pw.search(/[`~!@@#$%^&*|₩₩₩'₩";:₩/?]/gi);
let reg = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/;

if (pw.length < 8 || pw.length > 20) {
	alert("8자리 ~ 20자리 이내로 입력해주세요.");
	return false;
} else if (pw.search(/\s/) != -1) {
	alert("비밀번호는 공백 없이 입력해주세요.");
	return false;
} else if (number < 0 || english < 0 || spece < 0) {
	alert("영문,숫자,특수문자를 혼합하여 입력해주세요.");
	return false;
} else if ((number < 0 && english < 0) || (english < 0 && spece < 0) || (spece < 0 && number < 0)) {
	alert("영문,숫자, 특수문자 중 2가지 이상을 혼합하여 입력해주세요.");
	return false;
} else if (/(\w)\1\1\1/.test(pw)) {
	alert('같은 문자를 4번 이상 사용하실 수 없습니다.');
	return false;
} else if (pw.search(id) > -1) {
	alert("비밀번호에 아이디가 포함되었습니다.");
	return false;
} else {
	alert("비밀번호가 정상적으로 입력되었습니다.");
	return true;
}
if (false === reg.test(pw)) {
	alert('비밀번호는 8자 이상이어야 하며, 숫자/대문자/소문자/특수문자를 모두 포함해야 합니다.');
	return false;
} else {
	alert("비밀번호가 정상적으로 입력되었습니다.");
	return true;
}

참고

The Yellow Lion King 데이터와 함께 살아가기
포스트it의 개발자 도전기

profile
https://hdlee.dev
post-custom-banner

0개의 댓글