BLOG ARTICLE JavaScript | 5 ARTICLE FOUND

  1. 2010.06.01 JavaScript 정규식 정리
  2. 2008.03.08 EMail 체크 JavaScript
  3. 2008.03.07 주민번호 & 외국인 등록번호 체크 자바스크립트

Dev Note/JavaScript 2010.06.01 17:21

구글링과 네이버 검색으로 사용을 많이 할 것 같은 자바스크립트 정규식을 정리해 봤다.

* 숫자만 허용하는 정규식
    var expText = /[0-9]/;
* IP 입력 형식의 정규식 (xxx.xxx.xxx.xxx)
    var expText = /^(1|2)?\d?\d([.](1|2)?\d?\d){3}$/;
* E-Mail 입력 형식의 정규식
    var expText = /^([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}$/;
* 핸드폰 번호 입력 형식의 정규식
    var expText = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;
* 일반 전화번호 입력 형식의 정규식
    expText = /^\d{2,3}-\d{3,4}-\d{4}$/;
* URL 입력 형식의 정규식
    expText = /(?:(?:(https?|ftp|telnet):\/\/|[\s\t\r\n\[\]\`\<\>\"\'])((?:[\w$\-_\.+!*\'\(\),]|%[0-9a-f][0-9a-f])*\:(?:[\w$\-_\.+!*\'\(\),;\?&=]|%[0-9a-f][0-9a-f])+\@)?(?:((?:(?:[a-z0-9\-가-힣]+\.)+[a-z0-9\-]{2,})|(?:[\d]{1,3}\.){3}[\d]{1,3})|localhost)(?:\:([0-9]+))?((?:\/(?:[\w$\-_\.+!*\'\(\),;:@&=ㄱ-ㅎㅏ-ㅣ가-힣]|%[0-9a-f][0-9a-f])+)*)(?:\/([^\s\/\?\.:<>|#]*(?:\.[^\s\/\?:<>|#]+)*))?(\/?[\?;](?:[a-z0-9\-]+(?:=[^\s:&<>]*)?\&)*[a-z0-9\-]+(?:=[^\s:&<>]*)?)?(#[\w\-]+)?)/gmi;

사용은 아래와 같이 사용하면 된다.
if (expText.test([비교할 값]) != true) {
   alert("입력에 문제가 있습니다. 확인바랍니다.");
}

저작자 표시
신고

Dev Note/JavaScript 2008.03.08 00:26

사용자가 입력한 E-Mail 주소를 정규식을 이용하여 체크하는 JavaScript는

   function checkEmail(emailStr) {
      var checkStr = /(\S+)@(\S+)\.(\S+)/;

     
if (!checkStr.test(emailStr)) {
         return false;    
      }
     
      return true;
   }

위 스크립트는 사용자가 입력한 E-Mail 주소의 유효성을 체크하고 이상이 없으면 true를 리턴한다.
여기에 사용 된 정규식을 간단히 알아보면 다음과 같다.

   (\S+)@ : "@" 앞에 띄워쓰기가 없는 문자열이 온다.
   @(\S+)\. : "@" 뒤 "." 앞에는 띄워쓰기 없는 문자열이 온다.
   \.(\S+) : "." 뒤에는 아무 문자열이 온다.
신고

Dev Note/JavaScript 2008.03.07 23:43

웹에서 주민번호 또는 외국인 등록번호를 입력 받아 체크하는 자바스크립트를 알아보자.

-- 국내인의 주민번호 체크 자바스크립트
   function ssnCheck(ssn) {
      var lastid, li_mod, li_minus, li_last;
      var checkValue = 0;

      if (ssn.length != 13) return false;
      lastid = parseFloat(ssn.substring(12,13));  
     
     
checkValue += (parseInt(ssn.substring(0,1)) * 2) + (parseInt(ssn.substring(1,2)) * 3)
            + (parseInt(ssn.substring(2,3)) * 4) + (parseInt(ssn.substring(3,4)) * 5)
            + (parseInt(ssn.substring(4,5)) * 6) + (parseInt(ssn.substring(5,6)) * 7)
            + (parseInt(ssn.substring(6,7)) * 8) + (parseInt(ssn.substring(7,8)) * 9)
            + (+parseInt(ssn.substring(8,9)) * 2)  + (parseInt(ssn.substring(9,10)) * 3)
            + (parseInt(ssn.substring(10,11)) * 4) + (parseInt(ssn.substring(11,12)) * 5);

      li_mod = checkValue % 11;
      li_minus = 11 - li_mod;
      li_last = li_minus % 10;

      if (li_last != lastid) return false;
     
      return true;
   }

-- 외국인 등록번호 체크 자바스크립트
   function isFrgNo(fgnno) {
      var sum = 0;
      var odd = 0;
      buf = new Array(13);

      for(i=0; i<13; i++) buf[i] = parseInt(fgnno.charAt(i));

      odd = buf[7]*10 + buf[8];

      if(odd%2 != 0) return false;

      if((buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9)) return false;

      multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];

      for(i=0, sum=0; i<12; i++) sum += (buf[i] *= multipliers[i]);

      sum = 11 - (sum%11);

      if(sum >= 10) sum -= 10;

      sum += 2;
      if(sum >= 10) sum -= 10;

      if(sum != buf[12]) return false;
 
      return true;
   }

그럼 위의 스크립트를 이용하여 사용자가 입력한 주민번호 또는 외국인 등록번호를 체크하는 간단한 예제로 확인해 보자.

   <body>
      <form name="form" action="" method="post">
        주민번호 :
         <input type="text" name="ssn1" size="10" maxlength="6" onkeyup="numCheck(this); ssn1_len_check();" />
         -
         <input type="text" name="ssn2" size="10" maxlength="7" onkeyup="numCheck(this);" />
         <input type="button" value="주민번호 체크" onclick="check();"/>
      </form>
   </body>

여기서 numCheck() 함수는 이전 글의 숫자만 입력 받는 TextField에서 확인할 수 있다.

   function numCheck(obj) {
      var numCheck = /^\d+$/;
      var checkStr = obj.value;

      if(checkStr != '') {
         if(!numCheck.test(checkStr)) {
            alert('숫자만 입력이 가능합니다.');
            obj.value = '';
            obj.focus();
         }
      }
   }

이외에 사용된 자바스크립트로 주민번호 앞 6자리가 입력 되면 뒷자리 입력으로 넘어가게 하는 ssn1_len_check() 함수와 실제 사용자가 입력한 주민번호 또는 외국인 등록번호를 체크하는 check() 함수가 있다.

   function ssn1_len_check() {
      var ssn1 = document.form.ssn1.value;
     
      if ( ssn1.length > 5 ) {
         document.form.ssn2.focus();
      }
   }

   function check() {
      var ssn1 = document.form.ssn1.value;
      var ssn2 = document.form.ssn2.value;
 
      if(ssn1 == '') {
         alert('주민번호 앞 6자리가 입력되지 않았습니다.');
         document.form.ssn1.focus();
         return;
      }

      if(ssn2 == '') {
         alert('주민번호 뒷 7자리가 입력되지 않았습니다.');
         document.form.ssn2.focus();
         return;
      }

      var ssn = ssn1 + ssn2;

      if(ssn2.substring(0,1) == '1' || ssn2.substring(0,1) == '3' ||
            ssn2.substring(0,1) == '2' || ssn2.substring(0,1) == '4') {
         // 국내 주민번호 체크
         if (ssnCheck(ssn) == false ) {
            alert('주민번호를 정확히 입력하십시오.');
            document.form.ssn1.value = '';
            document.form.ssn2.value = '';
            document.form.ssn1.focus();
            return;
         }
      } else {
         // 외국인 등록번호 체크
         if(isFrgNo(ssn) == false) {
            alert( "외국인 등록번호를 정확히 입력하십시오." );
            document.form.ssn1.value = '';
            document.form.ssn2.value = '';
            document.form.ssn1.focus();
            return;
         }  
      }
   }

이상 사용자가 입력한 주민번호 또는 외국인 등록번호를 체크하는 스크립트와 예제를 알아봤습니다.

신고