2017년 6월 3일 토요일

JavaScript : 정규식으로 날짜 체크하기

<script language="JavaScript">
<!--
/**
* 문자열 형식이 조건에 맞는지 확인
* 형식의 예)
* var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/; //메일체크
* @obj
* @format      정규식
* @return      조건이 맞을시 true
*/
function inputFormatChk(obj,format) {
    if (obj.value.search(format) == -1) {
        alert(obj.title+" 입력 형식이 올바르지 않습니다.");
        obj.focus();
        return false;
    }
    return true;
}
/**
* 인풋박스에 입력된 문자열 형식이 올바르지 않을시 메시지 출력
* @obj
* @return      정상 입력시 true
*/
function ck() {
    var frm = document.chk;
    //var format = /([^가-?])+/; //한글만 허용
    //var format = /([^0-9])/; //숫자 금지
    //var format = /([^-a-zA-Z]/; //영문 금지
    var format = /([-가-?a-zA-Z0-9/].)/; //한글, 영어, 숫자 금지
    //var format = /^(\w|[\-\.])+@((\w|[\-\.])+)\.([A-Za-z]+)$/; //메일형식 체크
    if (!inputFormatChk(frm.mail, format)) {
        return;
    }
}
//-->
</script>
<script type="text/javascript">
//날짜 형식 변환
function aa() {
    var frm = document.chk;
    var str=frm.mail.value;
    var arr=str.match(/[\d{2}|\d{4}][\.|\/|\-]\d{1,2}[\.|\/|\-]\d{1,2}/); //yyyy.mm.dd 또는 yyyy/mm/dd 또는 yyyy-mm-dd 의 정규식
    if (arr==null) {
        alert("형식 불일치");
        return;
    }
    arr=str.match(/\d{1,4}/g); //g가 반복되도록 하는것 같음 -> 숫자 1자리에서 4자리 연속인 경우의 정규식
    if (arr==null) {
        alert("non");
        return;
    }
    str = "";
    for (var i=0; i<arr.length; i++) {
        str += i > 0 ? "-" : "";
        //str += (i==0 && arr[i].length<4) ? "20"+arr[i] : arr[i]; //숫자 1자리는 2자리로 변환
        str += arr[i].length<2 ? "0"+arr[i] : arr[i]; //숫자 1자리는 2자리로 변환
    }
    frm.mail2.value = str;
}
</script>

<form name="chk">
<input type="text" name="mail" value="2007/01/12"><br>
<input type="text" name="mail2"><br>
<button onClick="aa()">체크</button>
</form>