[TIL] 정규식

이현동·2023년 1월 14일
0

TIL

목록 보기
5/59

사전 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

0개의 댓글