개발/WEB PROGRAMMING

[ 공통 ] javascript String 객체 Util성(실개발자 유용한 꿀팁)

itaekwon class 2020. 3. 26.
728x90
  //-----------------------------------------------------------------------------
  // 문자열내의 _findValue를 모두 _replaceValue로 바꾸어 준다
  // ex : str.replaceAll("xx","bb");
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.replaceAll = function(_findValue, _replaceValue) {
   return this.replace(new RegExp(_findValue,"g"), _replaceValue);
  };

  //-----------------------------------------------------------------------------
  // 포맷된 문자열 반환
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.getFormatVal = function(_fType) {
    if (_fType == undefined) { this; }
    _fType = _fType.trim();
    if      (_fType  == "YM")        { return this.fmtYm(); }         // 년월
    else if (_fType  == "YMD")       { return this.fmtYmd(); }        // 년월일
    else if (_fType  == "YMD_FROMTO"){ return this.fmtYmdFromTo(); }  // 년월일 from to
    else if (_fType  == "MONEY")     { return this.fmtMoney(); }      // 천단위 컴마
    else if (_fType  == "ZIP")       { return this.fmtZip(); }        // 우편번호
    else if (_fType  == "SAUPJA_NO") { return this.fmtSaupjaNo(); }   // 사업자번호
    else if (_fType  == "CORP_NO")   { return this.fmtCorpNo(); }     // 법인번호
    else if (_fType  == "JUMIN_NO")  { return this.fmtJuminNo(); }    // 주민등록번호
    else if (_fType  == "ATTBTN")    { return this.fmtAttBtn(); }     // 첨부파일버튼
    else if (_fType.indexOf("CUT")>=0) { return this.fmtCut(_fType.replace(/CUT/gi,"")); } // 제한글자 자르기
    //else if (_fType  == "HTML")      { return this.fmtHTML(); }       // HTML
    else { return this; }
  };


  String.prototype.fmtCut = function(len) {
      var val = this;
      if (val.length > len) {
          return val.substring(0,len) + "...";
      } else {
          return val;
      }
  }

  //-----------------------------------------------------------------------------
  // 년월 형태의 문자열 반환
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.fmtYm = function() {
     var val = this.replaceAll('-','');
     if (val.length >= 6)
       return val.substring(0,4) + '-' + val.substring(4,6);
     else
       return val;
  };

  //-----------------------------------------------------------------------------
  // 날짜 형태의 문자열 반환
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.fmtYmd = function() {
     var val = this.replaceAll('-','');
     if (val.length >= 8)
       return val.substring(0,4) + '-' + val.substring(4,6) + '-' + val.substring(6,8);
     else if (val.length >= 6)
       return val.substring(0,4) + '-' + val.substring(4,6);
     else
       return val;
  };

  //-----------------------------------------------------------------------------
  // 날짜 형태의 문자열 반환 From to
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.fmtYmdFromTo = function() {
     var val = this.replaceAll('-','');
     if (val.length >= 16)
         return val.substring(0,4) + '-' + val.substring(4,6) + '-' + val.substring(6,8) + ' ~ '
               + val.substring(8,12) + '-' + val.substring(12,14) + '-' + val.substring(14,16);
     else if (val.length >= 8)
       return val.substring(0,4) + '-' + val.substring(4,6) + '-' + val.substring(6,8);
     else if (val.length >= 6)
       return val.substring(0,4) + '-' + val.substring(4,6);
     else
       return val;
  };

  //-----------------------------------------------------------------------------
  // 우편번호 형태의 문자열 반환
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.fmtZip = function() {
     var val = this.replaceAll('-','');
     if (val.length >= 6)
       return val.substring(0,3) + '-' + val.substring(3,6) ;
     else
       return val;
  };

  //-----------------------------------------------------------------------------
  // 사업자 번호 형태의 문자열 반환
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.fmtSaupjaNo = function() {
    var val = this.replaceAll('-','');
    if (val.length == 10)
      return val.substring(0,3) + '-' + val.substring(3,5) + '-' + val.substring(5,10);
    else
      return val;
  }  ;

  //-----------------------------------------------------------------------------
  // 법인 번호 형태의 문자열 반환
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.fmtCorpNo = function() {
    var val = this.replaceAll('-','');
    if (val.length == 13)
      return val.substring(0,6) + '-' + val.substring(6,13);
    else
      return val;
  }

  //-----------------------------------------------------------------------------
  // 주민등록 번호 형태의 문자열 반환
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.fmtJuminNo = function() {
    var val = this.replaceAll('-','');
    if (val.length == 13)
      return val.substring(0,6) + '-' + val.substring(6,13);
    else
      return val;
  }

  //-----------------------------------------------------------------------------
  // 문자의 좌, 우 공백 제거
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.trim = function() {
      return this.replace(/(^\s*)|(\s*$)/g, "");
  }

  //-----------------------------------------------------------------------------
  // 문자의 좌 공백 제거
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.ltrim = function() {
      return this.replace(/(^\s*)/, "");
  }

  //-----------------------------------------------------------------------------
  // 문자의 우 공백 제거
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.rtrim = function() {
      return this.replace(/(\s*$)/, "");
  }

  //-----------------------------------------------------------------------------
  // 문자열의 byte 길이 반환
  // @return : int
  //-----------------------------------------------------------------------------
  String.prototype.byte = function() {
      var cnt = 0;
      for (var i = 0; i < this.length; i++) {
          if (this.charCodeAt(i) > 127)
              cnt += 2;
          else
              cnt++;
      }
      return cnt;
  }

  //-----------------------------------------------------------------------------
  // 문자열의 byte 길이 반환
  // @return : int
  //-----------------------------------------------------------------------------
  String.prototype.getByteLength = function() {
      var cnt = 0;
      for (var i = 0; i < this.length; i++) {
          if (this.charCodeAt(i) > 127)
              cnt += 2;
          else
              cnt++;
      }
      return cnt;
  }
  //-----------------------------------------------------------------------------
  // 정수형으로 변환
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.int = function() {
      if(!isNaN(this)) {
          return parseInt(this);
      }
      else {
          return null;
      }
  }

  //-----------------------------------------------------------------------------
  // 숫자만 가져 오기
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.num = function() {
      return (this.trim().replace(/[^0-9]/g, ""));
  }

  //-----------------------------------------------------------------------------
  // 숫자에 3자리마다 , 를 찍어서 반환
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.fmtMoney = function() {
      var num = this.trim();
      var dotnum = num.indexOf('.') < 0 ? '' : num.substring(num.indexOf('.'), num.length);
      var num = num.indexOf('.') < 0 ? num : num.substring(0, num.indexOf('.'));
      while((/(-?[0-9]+)([0-9]{3})/).test(num)) {
          num = num.replace((/(-?[0-9]+)([0-9]{3})/), "$1,$2");
      }
      return num + (dotnum == '' ? '' : dotnum) ;
  }

  //-----------------------------------------------------------------------------
  // 숫자의 자리수(cnt)에 맞도록 반환
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.padLeft = function(cnt, padStr) {
      var digit = "";
      if (this.length < cnt) {
          for(var i = 0; i < cnt - this.length; i++) {
              digit += padStr;
          }
      }
      return digit + this;
  }

  //-----------------------------------------------------------------------------
  // " -> &#34; ' -> &#39;로 바꾸어서 반환
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.quota = function() {
      return this.replace(/"/g, "&#34;").replace(/'/g, "&#39;");
  }

  //-----------------------------------------------------------------------------
  // 파일명 추출
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.fileName = function() {
	  var str = this;
	  str = (str.indexOf("\\") < 0) ? str : str.substring(str.lastIndexOf('\\')+1);
	  str = (str.indexOf("/") < 0) ? str : str.substring(str.lastIndexOf('/')+1);
      return (str.indexOf(".") < 0) ? str : str.substring(0, str.lastIndexOf("."));
  }

  //-----------------------------------------------------------------------------
  // 파일 확장자만 가져오기
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.fileExt = function() {
      return (this.indexOf(".") < 0) ? "" : this.substring(this.lastIndexOf(".") + 1, this.length);
  }

  //-----------------------------------------------------------------------------
  // URL에서 파라메터 제거한 순수한 url 얻기
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.uri = function() {
      var arr = this.split("?");
      arr = arr[0].split("#");
      return arr[0];
  }



/*---------------------------------------------------------------------------------*\
  각종 체크 함수들
/*---------------------------------------------------------------------------------*/

  //-----------------------------------------------------------------------------
  // 정규식에 쓰이는 특수문자를 찾아서 이스케이프 한다.
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.meta = function() {
      var str = this;
      var result = ""
      for(var i = 0; i < str.length; i++) {
          if((/([\$\(\)\*\+\.\[\]\?\\\^\{\}\|]{1})/).test(str.charAt(i))) {
              result += str.charAt(i).replace((/([\$\(\)\*\+\.\[\]\?\\\^\{\}\|]{1})/), "\\$1");
          }
          else {
              result += str.charAt(i);
          }
      }
      return result;
  }

  //-----------------------------------------------------------------------------
  // 정규식에 쓰이는 특수문자를 찾아서 이스케이프 한다.
  // @return : String
  //-----------------------------------------------------------------------------
  String.prototype.remove = function(pattern) {
      return (pattern == null) ? this : eval("this.replace(/[" + pattern.meta() + "]/g, \"\")");
  }

  //-----------------------------------------------------------------------------
  // 최소 최대 길이인지 검증
  // str.isLength(min [,max])
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isLength = function() {
      var min = arguments[0];
      var max = arguments[1] ? arguments[1] : null;
      var success = true;
      if(this.length < min) {
          success = false;
      }
      if(max && this.length > max) {
          success = false;
      }
      return success;
  }

  //-----------------------------------------------------------------------------
  // 최소 최대 바이트인지 검증
  // str.isByteLength(min [,max])
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isByteLength = function() {
      var min = arguments[0];
      var max = arguments[1] ? arguments[1] : null;
      var success = true;
      if(this.byte() < min) {
          success = false;
      }
      if(max && this.byte() > max) {
          success = false;
      }
      return success;
  }

  //-----------------------------------------------------------------------------
  // 공백이나 널인지 확인
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isBlank = function() {
      var str = this.trim();
      for(var i = 0; i < str.length; i++) {
          if ((str.charAt(i) != "\t") && (str.charAt(i) != "\n") && (str.charAt(i)!="\r")) {
              return false;
          }
      }
      return true;
  }

//-----------------------------------------------------------------------------
  // 공백을 다른 문자로 교채
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.nvl = function() {
      var arg = arguments[0] ? arguments[0] : "";
      var str = this.trim();
      if(this.isBlank()) return arg;
      else return this;
  }

  //-----------------------------------------------------------------------------
  // 숫자로 구성되어 있는지 학인
  // arguments[0] : 허용할 문자셋
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isNum = function() {
      return (/^[0-9]+$/).test(this.remove(arguments[0])) ? true : false;
  }
  
  //-----------------------------------------------------------------------------
  // 숫자로 구성되어 있는지 학인
  // arguments[0] : 허용할 문자셋
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isFloat = function() {
	  var rtn = false;
	  try {
		  return !isNaN(this.toString());
	  } catch(e) {
		  rtn = false;
	  }
	  return rtn;
  }

  //-----------------------------------------------------------------------------
  // 영어만 허용 - arguments[0] : 추가 허용할 문자들
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isEng = function() {
      return (/^[a-zA-Z]+$/).test(this.remove(arguments[0])) ? true : false;
  }

  //-----------------------------------------------------------------------------
  // 영어대문자만 허용 - arguments[0] : 추가 허용할 문자들
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isEngCap = function() {
      return (/^[A-Z]+$/).test(this.remove(arguments[0])) ? true : false;
  }
  //-----------------------------------------------------------------------------
  // 숫자와 영어만 허용 - arguments[0] : 추가 허용할 문자들
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isEngNum = function() {
      return (/^[0-9a-zA-Z]+$/).test(this.remove(arguments[0])) ? true : false;
  }
  //-----------------------------------------------------------------------------
  // 숫자와 영어만 허용 - arguments[0] : 추가 허용할 문자들
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isNumEng = function() {
      return this.isEngNum(arguments[0]);
  }

    String.prototype.isYmd = function() {
		var s = this.replace(/-/gi,'');
		if (s.length == 8) {
		  var pt = /^\d{4}\d{2}\d{2}/;
		  if (!pt.test(s)) return false;
		} else if(s.length == 6) {
		  return false;
		} else if(s.length == 4) {
		  return false;
		} else {
		  return false;
		}

		var y = parseInt(s.substr(0,4), 10);
		var m = parseInt(s.substr(4,2), 10) -1;
		var d = parseInt(s.substr(6,2), 10);
		var dt = new Date(y, m, d);
		if (dt.getFullYear() == y && dt.getMonth() == m && dt.getDate() == d) {
			return true;
		} else {
			return false;
		};
  }

  //-----------------------------------------------------------------------------
  // 아이디 체크 영어와 숫자만 체크 첫글자는 영어로 시작 - arguments[0] : 추가 허용할 문자들
  // @return : boolean
  //-----------------------------------------------------------------------------
  var rejectIdList = "admin,server,administrator,manager,system,root,administrator,nibr,rhksflwk,wkdnjsrhks,test,dnabank,datacenter";
  String.prototype.isUserid = function() {
      //return (/^[a-zA-Z0-9_-]{8,20}$/).test(this.remove(arguments[0])) ? true : false;
      var bbb = (/^[a-zA-Z](?=.*[a-zA-Z0-9_-]{3,20})(?=.*[0-9]).*$/).test(this.remove(arguments[0])) ? true : false;
      if (bbb == false) {
          return bbb;
      } else {
          var rejectArr = rejectIdList.split(",");
          for (var i=0; i < rejectArr.length; i++) {
              if (this.indexOf(rejectArr[i]) >= 0) {
                  return false;
              }
          }   
      }
      return true;
  }

  String.prototype.isEngNum = function() {
      return (/^[a-zA-Z0-9_-]{4,20}$/).test(this.remove(arguments[0])) ? true : false;
  }

  //-----------------------------------------------------------------------------
  // 패스워드 체크 숫자,문자 조합 최소 9글자 - arguments[0] : 추가 허용할 문자들
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isPasswd = function() {
	  /*
      var rejectPwList = rejectIdList;
      var bbb =  (/^.*(?=.{6,20})(?=.*[a-zA-Z0-9,!,@,$,%,^,*]).*$/).test(this.remove(arguments[0])) ? true : false;
      var ccc =  (/(\w)\1\1\1/).test(this.remove(arguments[0])) ? true : false;
      //var bbb = (/^[a-zA-Z0-9_-]{8,20}$/).test(this.remove(arguments[0])) ? true : false;
      if (bbb == false || ccc == true ) {
          return false;
      } else {
          var rejectArr = rejectPwList.split(",");
          for (var i=0; i < rejectArr.length; i++) {
              if (this.indexOf(rejectArr[i]) >= 0) {
                  return false;
              }
          }
      } 
      */   
      //return true;
      // 숫자,소문자,대문자,특수문자 최소 9글자
      return (/^.*(?=.{9,20})(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*]).*$/).test(this.remove(arguments[0])) ? true : false;
  }

  //-----------------------------------------------------------------------------
  // 한글 체크 - arguments[0] : 추가 허용할 문자들
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isKor = function() {
      return (/^[가-힣]+$/).test(this.remove(arguments[0])) ? true : false;
  }

  //-----------------------------------------------------------------------------
  // 주민번호 체크 - arguments[0] : 주민번호 구분자
  // XXXXXX-XXXXXXX
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isJumin = function() {
      var arg = arguments[0] ? arguments[0] : "";
      var jumin = eval("this.match(/[0-9]{2}[01]{1}[0-9]{1}[0123]{1}[0-9]{1}" + arg + "[1234]{1}[0-9]{6}$/)");
      if(jumin == null) {
          return false;
      }
      else {
          jumin = jumin.toString().num().toString();
      }
      // 생년월일 체크
      var birthYY = (parseInt(jumin.charAt(6)) == (1 ||2)) ? "19" : "20";
      birthYY += jumin.substr(0, 2);
      var birthMM = jumin.substr(2, 2) - 1;
      var birthDD = jumin.substr(4, 2);
      var birthDay = new Date(birthYY, birthMM, birthDD);
      if(birthDay.getYear() % 100 != jumin.substr(0,2) || birthDay.getMonth() != birthMM || birthDay.getDate() != birthDD) {
          return false;
      }
      var sum = 0;
      var num = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5]
      var last = parseInt(jumin.charAt(12));
      for(var i = 0; i < 12; i++) {
          sum += parseInt(jumin.charAt(i)) * num[i];
      }
      return ((11 - sum % 11) % 10 == last) ? true : false;
  }

  //-----------------------------------------------------------------------------
  // 외국인 등록번호 체크 - arguments[0] : 등록번호 구분자
  // XXXXXX-XXXXXXX
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isForeign = function() {
      var arg = arguments[0] ? arguments[0] : "";
      var jumin = eval("this.match(/[0-9]{2}[01]{1}[0-9]{1}[0123]{1}[0-9]{1}" + arg + "[5678]{1}[0-9]{1}[02468]{1}[0-9]{2}[6789]{1}[0-9]{1}$/)");
      if(jumin == null) {
          return false;
      }
      else {
          jumin = jumin.toString().num().toString();
      }
      // 생년월일 체크
      var birthYY = (parseInt(jumin.charAt(6)) == (5 || 6)) ? "19" : "20";
      birthYY += jumin.substr(0, 2);
      var birthMM = jumin.substr(2, 2) - 1;
      var birthDD = jumin.substr(4, 2);
      var birthDay = new Date(birthYY, birthMM, birthDD);
      if(birthDay.getYear() % 100 != jumin.substr(0,2) || birthDay.getMonth() != birthMM || birthDay.getDate() != birthDD) {
          return false;
      }
      if((parseInt(jumin.charAt(7)) * 10 + parseInt(jumin.charAt(8))) % 2 != 0) {
          return false;
      }
      var sum = 0;
      var num = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5]
      var last = parseInt(jumin.charAt(12));
      for(var i = 0; i < 12; i++) {
          sum += parseInt(jumin.charAt(i)) * num[i];
      }
      return (((11 - sum % 11) % 10) + 2 == last) ? true : false;
  }

  //-----------------------------------------------------------------------------
  // 사업자번호 체크 - arguments[0] : 등록번호 구분자
  // XX-XXX-XXXXX
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isSaupjaNo = function() {
      var arg = arguments[0] ? arguments[0] : "";
      var biznum = eval("this.match(/[0-9]{3}" + arg + "[0-9]{2}" + arg + "[0-9]{5}$/)");
      if(biznum == null) {
          return false;
      }
      else {
          biznum = biznum.toString().num().toString();
      }
      var sum = parseInt(biznum.charAt(0));
      var num = [0, 3, 7, 1, 3, 7, 1, 3];
      for(var i = 1; i < 8; i++) sum += (parseInt(biznum.charAt(i)) * num[i]) % 10;
      sum += Math.floor(parseInt(parseInt(biznum.charAt(8))) * 5 / 10);
      sum += (parseInt(biznum.charAt(8)) * 5) % 10 + parseInt(biznum.charAt(9));
      return (sum % 10 == 0) ? true : false;
  }

  //-----------------------------------------------------------------------------
  // 법인 등록번호 체크 - arguments[0] : 등록번호 구분자
  // XXXXXX-XXXXXXX
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isCorpNo = function() {
      var arg = arguments[0] ? arguments[0] : "";
      var corpnum = eval("this.match(/[0-9]{6}" + arg + "[0-9]{7}$/)");
      if(corpnum == null) {
          return false;
      }
      else {
          corpnum = corpnum.toString().num().toString();
      }
      var sum = 0;
      var num = [1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
      var last = parseInt(corpnum.charAt(12));
      for(var i = 0; i < 12; i++) {
          sum += parseInt(corpnum.charAt(i)) * num[i];
      }
      return ((10 - sum % 10) % 10 == last) ? true : false;
  }

  //-----------------------------------------------------------------------------
  // 이메일의 유효성을 체크
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isEmail = function() {
      return (/\w+([-+.]\w+)*@\w+([-.]\w+)*\.[a-zA-Z]{2,4}$/).test(this.trim());
  }

  //-----------------------------------------------------------------------------
  // 전화번호 체크 - arguments[0] : 전화번호 구분자
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isPhone = function() {
      var arg = arguments[0] ? arguments[0] : "";
      return eval("(/(02|0[3-9]{1}[0-9]{1})" + arg + "[1-9]{1}[0-9]{2,3}" + arg + "[0-9]{4}$/).test(this)");
  }

  //-----------------------------------------------------------------------------
  // 핸드폰번호 체크 - arguments[0] : 핸드폰 구분자
  // @return : boolean
  //-----------------------------------------------------------------------------
  String.prototype.isMobile = function() {
      var arg = arguments[0] ? arguments[0] : "";
      return eval("(/01[016789]" + arg + "[1-9]{1}[0-9]{2,3}" + arg + "[0-9]{4}$/).test(this)");
  }
  
  //-----------------------------------------------------------------------------
  // 한글 숫자 123456 일경우 (십이만삼천사백오십육)
  // @return : 한글화된 숫자
  //-----------------------------------------------------------------------------
  String.prototype.moneyToKOR = function() {
    var chknum = this;
    num = chknum;
    num = num.split(',').join('');
    var arr = num.split('.');
    var num = new Array();
    for (i = 0; i <= arr[0].length-1; i++) {
        num[i] = arr[0].substr(arr[0].length-1-i,1);
        if(i%3 == 0 && i != 0) num[i] += ',';
    }
    num = num.reverse().join('');
    if (!arr[1])
        chknum.value = num;
    else
        chknum.value = num+'.'+arr[1];

    var won = new Array();
    re = /^[1-9][0-9]*$/;
    num = chknum.toString().split(',').join('');
    if (!re.test(num)) {
        chknum.value = '';
        hanview.innerHTML = '';
    } else {
        var price_unit0 = new Array('','일','이','삼','사','오','육','칠','팔','구');
        var price_unit1 = new Array('','십','백','천');
        var price_unit2 = new Array('','만','억','조','경','해','시','양','구','간','정');
        for(i = num.length-1; i >= 0; i--) {
            won[i] = price_unit0[num.substr(num.length-1-i,1)];
            if(i > 0 && won[i] != '') won[i] += price_unit1[i%4];
            if(i % 4 == 0) won[i] += price_unit2[(i/4)];
        }
        for(i = num.length-1; i >= 0; i--) {
            if(won[i].length == 2) won[i-i%4] += '-';
            if(won[i].length == 1 && i > 0) won[i] = '';
            if(i%4 != 0) won[i] = won[i].replace('일','');
        }
        won = won.reverse().join('').replace(/-+/g,'');
        return won;
    }
  }
728x90

댓글