정규식을 활용해서 간단한 유효성검사를 만들어보자
입력 받는 형식은 YYYYMMDD OR YYYY-MM-DD 에
(- , . , /)가능하도록
function isValidDateFormat(date) {
// 자릿수검사
if(date.length != 8 && date.length != 10) return false;
// 특수문자 제거
let regex = /(\.)|(\-)|(\/)/g;
date = date.replace(regex,"");
// |: 또는 역할
// . 이거나 - 이거나 / 조건인 정규식
//g:는 전체
// 타입 검사 (숫자)
let format = /^[12][0-9]{7}/;
// ^: 앞부분
// $: 뒷부분
if(! format.test(date))return false;
// .test: 해당 date가 정규식에 충족하는지 boolean 형태로 반환
// 월 일 검사
let y = parseInt(date.substr(0,4));
let m = parseInt(date.substr(4,2));
let d = parseInt(date.substr(6));
if(m<1|| m>12)return false;
let lastDay = (new Date(y,m,0)).getDate();
if(d<1||d>lastDay) return false;
return true;
}
입력 방식을 안정하고 했으면 정규식을 어떻게 더 정확하게하지 하면서 고민하게된다... 961222도 있고 2021112도할수도있는데 input말고 select 쓸껄
코드작성할땐 항상 여러관점에서 봐야지