아무거나

[jquery] 아이디 패스워드 정책 정규식 본문

Javascript & HTML & CSS/Javascript

[jquery] 아이디 패스워드 정책 정규식

전봉근 2018. 12. 5. 20:58
반응형
회원가입을 할 때 가입폼에서 패스워드 정책이나 아이디 가입정책등이 필요한 경우가 있다.
이 경우 자바스크립트로 구현한 소스를 참고하자.

[HTML]
<div class="form-group">
   <div class="col-sm-9">
      <input type="password” id=“password” name="password”
         placeholder="Password" class="form-control" onkeyup="login.noSpaceCheck(this);" onchange="login.noSpaceCheck(this);" />
   </div>
</div>



[스크립트]
var login = {
    init: function () {
    },
    noSpaceCheck: function (obj) {
        var str_space = /\s/;
        if(str_space.exec(obj.value)) {
            alert("해당 항목에는 공백을 사용할수 없습니다.\n\n공백은 자동적으로 제거 됩니다.");
            obj.focus();
            obj.value = obj.value.replace(' ','');
            return false;
        }
    },
    memberReg: function () {
        var loginId = $('#loginId').val();
        var userName = $('#userName').val();
        var password = $('#password').val();
        var passwordConfirm = $('#passwordConfirm').val();

        if (!loginId) {
            alert('아이디를 입력하세요.');
            $('#loginId').focus();
            return false;
        }

        if (!login.idPolicy(loginId)) {
            return false;
        }

        if (!userName) {
            alert('이름을 입력하세요.');
            $('#userName').focus();
            return false;
        }

        if (!password) {
            alert('패스워드를 입력하세요.');
            $('#password').focus();
            return false;
        }

        if (!login.passwordPolicy(password)) {
            return false;
        }

        if (!passwordConfirm) {
            alert('패스워드 확인을 입력하세요.');
            $('#passwordConfirm').focus();
            return false;
        }

        if (password != passwordConfirm) {
            alert("입력한 두 개의 비밀번호가 서로 일치하지 않습니다.");
            return false;
        }

        $('#reg_user_form').submit();
    },
    idPolicy: function (value) {
        var loginIdRex = /^[a-z]+[a-z0-9]{2,10}$/g;

        if(!loginIdRex.test(value)) {
            alert("아이디는 영문자로 시작하는 3 ~ 10자 영문자 또는 숫자이어야 합니다.");
            return false;
        }

        return true;
    },
    passwordPolicy: function (value) {
        var num = value.search(/[0-9]/g);
        var bigEng = value.search(/[A-Z]/g);
        var spe = value.search(/[`~!@@#$%^&*|₩₩₩'₩";:₩/?]/gi);

        if (value.length < 10 || value.length > 64) {
            alert("비밀번호에 10자리 ~ 64자리 이내로 입력해주세요.");
            return false;
        }

        if (value.match(/[^a-zA-Z0-9`~!@@#$%^&*|₩₩₩'₩";:₩/?]/) != null) {
            alert("비밀번호는 숫자와 영문 또는 특수문자만 입력할 수 있습니다.");
            return false;
        }

        if (bigEng < 0) {
            alert("비밀번호에 영문 대문자를 1자 이상 입력해주세요.");
            return false;
        }

        if (num < 0) {
            alert("비밀번호에 숫자를 1자 이상 입력해주세요.");
            return false;
        }

        if (spe < 1) {
            alert("특수문자를 2자 이상 입력해주세요.");
            return false;
        }

        return true;
    }
};
login.init();



반응형
Comments