javascript函數(shù)庫

          Posted on 2007-11-15 10:40 yukui 閱讀(159) 評(píng)論(0)  編輯  收藏 所屬分類: 技術(shù)

           

          /*

          -------------- 函數(shù)檢索 --------------
          trim函數(shù):                         trim() lTrim() rTrim()
          校驗(yàn)字符串是否為空:                 checkIsNotEmpty(str)
          校驗(yàn)字符串是否為整型:               checkIsInteger(str)
          校驗(yàn)整型最小值:                    checkIntegerMinValue(str,val)
          校驗(yàn)整型最大值:                    checkIntegerMaxValue(str,val)
          校驗(yàn)整型是否為非負(fù)數(shù):               isNotNegativeInteger(str)
          校驗(yàn)字符串是否為浮點(diǎn)型:             checkIsDouble(str)
          校驗(yàn)浮點(diǎn)型最小值:                  checkDoubleMinValue(str,val)
          校驗(yàn)浮點(diǎn)型最大值:                  checkDoubleMaxValue(str,val)
          校驗(yàn)浮點(diǎn)型是否為非負(fù)數(shù):             isNotNegativeDouble(str)
          校驗(yàn)字符串是否為日期型:             checkIsValidDate(str)
          校驗(yàn)兩個(gè)日期的先后:                checkDateEarlier(strStart,strEnd)
          校驗(yàn)字符串是否為email型:           checkEmail(str)

          校驗(yàn)字符串是否為中文:               checkIsChinese(str)
          計(jì)算字符串的長度,一個(gè)漢字兩個(gè)字符:   realLength()
          校驗(yàn)字符串是否符合自定義正則表達(dá)式:   checkMask(str,pat)
          得到文件的后綴名:                   getFilePostfix(oFile)  
          -------------- 函數(shù)檢索 --------------
          */

          /**
          * added by LxcJie 2004.6.25
          * 去除多余空格函數(shù)
          * trim:去除兩邊空格 lTrim:去除左空格 rTrim: 去除右空格
          * 用法:
          *     var str = "  hello ";
          *     str = str.trim();
          */
          String.prototype.trim = function()
          {
              return this.replace(/(^[\\s]*)|([\\s]*$)/g, "");
          }
          String.prototype.lTrim = function()
          {
              return this.replace(/(^[\\s]*)/g, "");
          }
          String.prototype.rTrim = function()
          {
              return this.replace(/([\\s]*$)/g, "");
          }
          /********************************** Empty **************************************/
          /**
          *校驗(yàn)字符串是否為空
          *返回值:
          *如果不為空,定義校驗(yàn)通過,返回true
          *如果為空,校驗(yàn)不通過,返回false               參考提示信息:輸入域不能為空!
          */
          function checkIsNotEmpty(str)
          {
              if(str.trim() == "")
                  return false;
              else
                  return true;
          }//~~~
          /*--------------------------------- Empty --------------------------------------*/
          /********************************** Integer *************************************/
          /**
          *校驗(yàn)字符串是否為整型
          *返回值:
          *如果為空,定義校驗(yàn)通過,      返回true
          *如果字串全部為數(shù)字,校驗(yàn)通過,返回true
          *如果校驗(yàn)不通過,              返回false     參考提示信息:輸入域必須為數(shù)字!
          */
          function checkIsInteger(str)
          {
              //如果為空,則通過校驗(yàn)
              if(str == "")
                  return true;
              if(/^(\\-?)(\\d+)$/.test(str))
                  return true;
              else
                  return false;
          }//~~~
          /**
          *校驗(yàn)整型最小值
          *str:要校驗(yàn)的串。  val:比較的值
          *
          *返回值:
          *如果為空,定義校驗(yàn)通過,                返回true
          *如果滿足條件,大于等于給定值,校驗(yàn)通過,返回true
          *如果小于給定值,                        返回false              參考提示信息:輸入域不能小于給定值!
          */
          function checkIntegerMinValue(str,val)
          {
              //如果為空,則通過校驗(yàn)
              if(str == "")
                  return true;
              if(typeof(val) != "string")
                  val = val + "";
              if(checkIsInteger(str) == true)
              {
                  if(parseInt(str,10)>=parseInt(val,10))
                      return true;
                  else
                      return false;
              }
              else
                  return false;
          }//~~~
          /**
          *校驗(yàn)整型最大值
          *str:要校驗(yàn)的串。  val:比較的值
          *
          *返回值:
          *如果為空,定義校驗(yàn)通過,                返回true
          *如果滿足條件,小于等于給定值,校驗(yàn)通過,返回true
          *如果大于給定值,                        返回false       參考提示信息:輸入值不能大于給定值!
          */
          function checkIntegerMaxValue(str,val)
          {
              //如果為空,則通過校驗(yàn)
              if(str == "")
                  return true;
              if(typeof(val) != "string")
                  val = val + "";
              if(checkIsInteger(str) == true)
              {
                  if(parseInt(str,10)<=parseInt(val,10))
                      return true;
                  else
                      return false;
              }
              else
                  return false;
          }//~~~
          /**
          *校驗(yàn)整型是否為非負(fù)數(shù)
          *str:要校驗(yàn)的串。
          *
          *返回值:
          *如果為空,定義校驗(yàn)通過,返回true
          *如果非負(fù)數(shù),            返回true
          *如果是負(fù)數(shù),            返回false               參考提示信息:輸入值不能是負(fù)數(shù)!
          */
          function isNotNegativeInteger(str)
          {
              //如果為空,則通過校驗(yàn)
              if(str == "")
                  return true;
              if(checkIsInteger(str) == true)
              {
                  if(parseInt(str,10) < 0)
                      return false;
                  else
                      return true;
              }
              else
                  return false;
          }//~~~
          /*--------------------------------- Integer --------------------------------------*/
          /********************************** Double ****************************************/
          /**
          *校驗(yàn)字符串是否為浮點(diǎn)型
          *返回值:
          *如果為空,定義校驗(yàn)通過,      返回true
          *如果字串為浮點(diǎn)型,校驗(yàn)通過,  返回true
          *如果校驗(yàn)不通過,              返回false     參考提示信息:輸入域不是合法的浮點(diǎn)數(shù)!
          */
          function checkIsDouble(str)
          {
              //如果為空,則通過校驗(yàn)
              if(str == "")
                  return true;
              //如果是整數(shù),則校驗(yàn)整數(shù)的有效性
              if(str.indexOf(".") == -1)
              {
                  if(checkIsInteger(str) == true)
                      return true;
                  else
                      return false;
              }
              else
              {
                  if(/^(\\-?)(\\d+)(.{1})(\\d+)$/g.test(str))
                      return true;
                  else
                      return false;
              }
          }//~~~
          /**
          *校驗(yàn)浮點(diǎn)型最小值
          *str:要校驗(yàn)的串。  val:比較的值
          *
          *返回值:
          *如果為空,定義校驗(yàn)通過,                返回true
          *如果滿足條件,大于等于給定值,校驗(yàn)通過,返回true
          *如果小于給定值,                        返回false              參考提示信息:輸入域不能小于給定值!
          */
          function checkDoubleMinValue(str,val)
          {
              //如果為空,則通過校驗(yàn)
              if(str == "")
                  return true;
              if(typeof(val) != "string")
                  val = val + "";
              if(checkIsDouble(str) == true)
              {
                  if(parseFloat(str)>=parseFloat(val))
                      return true;
                  else
                      return false;
              }
              else
                  return false;
          }//~~~
          /**
          *校驗(yàn)浮點(diǎn)型最大值
          *str:要校驗(yàn)的串。  val:比較的值
          *
          *返回值:
          *如果為空,定義校驗(yàn)通過,                返回true
          *如果滿足條件,小于等于給定值,校驗(yàn)通過,返回true
          *如果大于給定值,                        返回false       參考提示信息:輸入值不能大于給定值!
          */
          function checkDoubleMaxValue(str,val)
          {
              //如果為空,則通過校驗(yàn)
              if(str == "")
                  return true;
              if(typeof(val) != "string")
                  val = val + "";
              if(checkIsDouble(str) == true)
              {
                  if(parseFloat(str)<=parseFloat(val))
                      return true;
                  else
                      return false;
              }
              else
                  return false;
          }//~~~
          /**
          *校驗(yàn)浮點(diǎn)型是否為非負(fù)數(shù)
          *str:要校驗(yàn)的串。
          *
          *返回值:
          *如果為空,定義校驗(yàn)通過,返回true
          *如果非負(fù)數(shù),            返回true
          *如果是負(fù)數(shù),            返回false               參考提示信息:輸入值不能是負(fù)數(shù)!
          */
          function isNotNegativeDouble(str)
          {
              //如果為空,則通過校驗(yàn)
              if(str == "")
                  return true;
              if(checkIsDouble(str) == true)
              {
                  if(parseFloat(str) < 0)
                      return false;
                  else
                      return true;
              }
              else
                  return false;
          }//~~~
          /*--------------------------------- Double ---------------------------------------*/
          /********************************** date ******************************************/
          /**
          *校驗(yàn)字符串是否為日期型
          *返回值:
          *如果為空,定義校驗(yàn)通過,           返回true
          *如果字串為日期型,校驗(yàn)通過,       返回true
          *如果日期不合法,                   返回false    參考提示信息:輸入域的時(shí)間不合法!(yyyy-MM-dd)
          */
          function checkIsValidDate(str)
          {
              //如果為空,則通過校驗(yàn)
              if(str == "")
                  return true;
              var pattern = /^((\\d{4})|(\\d{2}))-(\\d{1,2})-(\\d{1,2})$/g;
              if(!pattern.test(str))
                  return false;
              var arrDate = str.split("-");
              if(parseInt(arrDate[0],10) < 100)
                  arrDate[0] = 2000 + parseInt(arrDate[0],10) + "";
              var date =  new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]);
              if(date.getYear() == arrDate[0]
                 && date.getMonth() == (parseInt(arrDate[1],10) -1)+""
                 && date.getDate() == arrDate[2])
                  return true;
              else
                  return false;
          }//~~~
          /**
          *校驗(yàn)兩個(gè)日期的先后
          *返回值:
          *如果其中有一個(gè)日期為空,校驗(yàn)通過,          返回true
          *如果起始日期早于等于終止日期,校驗(yàn)通過,   返回true
          *如果起始日期晚于終止日期,                 返回false    參考提示信息: 起始日期不能晚于結(jié)束日期。
          */
          function checkDateEarlier(strStart,strEnd)
          {
              if(checkIsValidDate(strStart) == false || checkIsValidDate(strEnd) == false)
                  return false;
              //如果有一個(gè)輸入為空,則通過檢驗(yàn)
              if (( strStart == "" ) || ( strEnd == "" ))
                  return true;
              var arr1 = strStart.split("-");
              var arr2 = strEnd.split("-");
              var date1 = new Date(arr1[0],parseInt(arr1[1].replace(/^0/,""),10) - 1,arr1[2]);
              var date2 = new Date(arr2[0],parseInt(arr2[1].replace(/^0/,""),10) - 1,arr2[2]);
              if(arr1[1].length == 1)
                  arr1[1] = "0" + arr1[1];
              if(arr1[2].length == 1)
                  arr1[2] = "0" + arr1[2];
              if(arr2[1].length == 1)
                  arr2[1] = "0" + arr2[1];
              if(arr2[2].length == 1)
                  arr2[2]="0" + arr2[2];
              var d1 = arr1[0] + arr1[1] + arr1[2];
              var d2 = arr2[0] + arr2[1] + arr2[2];
              if(parseInt(d1,10) > parseInt(d2,10))
                 return false;
              else
                 return true;
          }//~~~
          /*--------------------------------- date -----------------------------------------*/
          /********************************** email *****************************************/
          /**
          *校驗(yàn)字符串是否為email型
          *返回值:
          *如果為空,定義校驗(yàn)通過,           返回true
          *如果字串為email型,校驗(yàn)通過,      返回true
          *如果email不合法,                  返回false    參考提示信息:Email的格式不正確!
          */
          function checkEmail(str)
          {
              //如果為空,則通過校驗(yàn)
              if(str == "")
                  return true;
              if (str.charAt(0) == "." || str.charAt(0) == "@" || str.indexOf(\'@\', 0) == -1
                  || str.indexOf(\'.\', 0) == -1 || str.lastIndexOf("@") == str.length-1 || str.lastIndexOf(".") == str.length-1)
                  return false;
              else
                  return true;
          }//~~~
          /*--------------------------------- email ----------------------------------------*/
          /********************************** chinese ***************************************/
          /**
          *校驗(yàn)字符串是否為中文
          *返回值:
          *如果為空,定義校驗(yàn)通過,           返回true
          *如果字串為中文,校驗(yàn)通過,         返回true
          *如果字串為非中文,             返回false    參考提示信息:必須為中文!
          */
          function checkIsChinese(str)
          {
              //如果值為空,通過校驗(yàn)
              if (str == "")
                  return true;
              var pattern = /^([\\u4E00-\\u9FA5]|[\\uFE30-\\uFFA0])*$/gi;
              if (pattern.test(str))
                  return true;
              else
                  return false;
          }//~~~
          /**
          * 計(jì)算字符串的長度,一個(gè)漢字兩個(gè)字符
          */
          String.prototype.realLength = function()
          {
            return this.replace(/[^\\x00-\\xff]/g,"**").length;
          }
          /*--------------------------------- chinese --------------------------------------*/
          /********************************** mask ***************************************/
          /**
          *校驗(yàn)字符串是否符合自定義正則表達(dá)式
          *str 要校驗(yàn)的字串  pat 自定義的正則表達(dá)式
          *返回值:
          *如果為空,定義校驗(yàn)通過,           返回true
          *如果字串符合,校驗(yàn)通過,           返回true
          *如果字串不符合,                   返回false    參考提示信息:必須滿足***模式
          */
          function checkMask(str,pat)
          {
              //如果值為空,通過校驗(yàn)
              if (str == "")
                  return true;
              var pattern = new RegExp(pat,"gi")
              if (pattern.test(str))
                  return true;
              else
                  return false;
          }//~~~
          /*--------------------------------- mask --------------------------------------*/
          /********************************** file ***************************************/
          /**
          * added by LxcJie 2004.6.25
          * 得到文件的后綴名
          * oFile為file控件對(duì)象
          */
          function getFilePostfix(oFile)
          {
              if(oFile == null)
                  return null;
              var pattern = /(.*)\\.(.*)$/gi;
              if(typeof(oFile) == "object")
              {
                  if(oFile.value == null || oFile.value == "")
                      return null;
                  var arr = pattern.exec(oFile.value);
                  return RegExp.$2;
              }
              else if(typeof(oFile) == "string")
              {
                  var arr = pattern.exec(oFile);
                  return RegExp.$2;
              }
              else
                  return null;
          }//~~~
          /*--------------------------------- file --------------------------------------*/


          ! 去除字符串兩端空格的處理


          如果采用傳統(tǒng)的方式,就要可能就要采用下面的方式了
          //清除左邊空格
          function js_ltrim(deststr)
          {
          if(deststr==null)return "";
          var pos=0;
          var retStr=new String(deststr);
          if (retStr.lenght==0) return retStr;
          while (retStr.substring(pos,pos+1)==" ") pos++;
          retStr=retStr.substring(pos);
          return(retStr);
          }
          //清除右邊空格
          function js_rtrim(deststr)
          {
          if(deststr==null)return "";
          var retStr=new String(deststr);
          var pos=retStr.length;
          if (pos==0) return retStr;
          while (pos && retStr.substring(pos-1,pos)==" " ) pos--;
          retStr=retStr.substring(0,pos);
          return(retStr);
          }
          //清除左邊和右邊空格
          function js_trim(deststr)
          {
          if(deststr==null)return "";
          var retStr=new String(deststr);
          var pos=retStr.length;
          if (pos==0) return retStr;
          retStr=js_ltrim(retStr);
          retStr=js_rtrim(retStr);
          return retStr;
          }


          采用正則表達(dá)式,來去除兩邊的空格,只需以下代碼
          String.prototype.trim = function()
          {
          return this.replace(/(^\s*)|(\s*$)/g, "");
          }


          一句就搞定了,
          可見正則表達(dá)式為我們節(jié)省了相當(dāng)?shù)木帉懘a量



          ! 移動(dòng)手機(jī)號(hào)的校驗(yàn)


          如果采用傳統(tǒng)的校驗(yàn)方式至少就要完成下面三步的校驗(yàn),
          (1). 是否是數(shù)字
          (2).是否是11位
          (3).數(shù)字的第三位是否是5,6,7,8,9
          如果采用正則表達(dá)式校驗(yàn),只需以下代碼
          function checkMobile1(form)
          {
          if (form.mobile.value > "")
          {
          var reg=/13[5,6,7,8,9]\d{8}/;
          if ( form.mobile.value.match(reg)== null)
          {
          alert("請(qǐng)輸入正確的移動(dòng)手機(jī)號(hào)碼!");
          form.mobile.focus(); return false;
          }
          }
          return true;
          }


          從上面的代碼可以看出校驗(yàn)移動(dòng)手機(jī)號(hào)只需定義一個(gè)var reg=/13[5,6,7,8,9]\d{8}/;模式匹配串就可以完成合法性校驗(yàn)了


          ! URL的校驗(yàn),
          條件:必須以http://https:// 開頭, 端口號(hào)必須為在1-65535 之間, 以下代碼完成了合法性校驗(yàn)


          //obj:數(shù)據(jù)對(duì)象
          //dispStr :失敗提示內(nèi)容顯示字符串
          function checkUrlValid( obj, dispStr)
          {
          if(obj == null)
          {
          alert("傳入對(duì)象為空");
          return false;
          }
          var str = obj.value;


          var urlpatern0 = /^https?:\/\/.+$/i;
          if(!urlpatern0.test(str))
          {
          alert(dispStr+"不合法:必須以'http:\/\/'或'https:\/\/'開頭!");
          obj.focus();
          return false;
          }


          var urlpatern2= /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?.+$/i;
          if(!urlpatern2.test(str))
          {
          alert(dispStr+"端口號(hào)必須為數(shù)字且應(yīng)在1-65535之間!");
          obj.focus();
          return false;
          }



          var urlpatern1 =/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i;


          if(!urlpatern1.test(str))
          {
          alert(dispStr+"不合法,請(qǐng)檢查!");
          obj.focus();
          return false;
          }


          var s = "0";
          var t =0;
          var re = new RegExp(":\\d+","ig");
          while((arr = re.exec(str))!=null)
          {
          s = str.substring(RegExp.index+1,RegExp.lastIndex);


          if(s.substring(0,1)=="0")
          {
          alert(dispStr+"端口號(hào)不能以0開頭!");
          obj.focus();
          return false;
          }


          t = parseInt(s);
          if(t<1 || t >65535)
          {
          alert(dispStr+"端口號(hào)必須為數(shù)字且應(yīng)在1-65535之間!");
          obj.focus();
          return false;
          }
          }
          return true;
          }

          對(duì)url的校驗(yàn),看上去有很多的代碼,這是因?yàn)橐o予出錯(cuò)提示, 否則只需var urlpatern1 =/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i; 一句就可以校驗(yàn)出url合法性了





          javascript正則表達(dá)式檢驗(yàn)
          /*********************************************************************************
          * EO_JSLib.js
          * javascript正則表達(dá)式檢驗(yàn)
          **********************************************************************************/


          //校驗(yàn)是否全由數(shù)字組成
          function isDigit(s)
          {
          var patrn=/^[0-9]{1,20}$/;
          if (!patrn.exec(s)) return false
          return true
          }


          //校驗(yàn)登錄名:只能輸入5-20個(gè)以字母開頭、可帶數(shù)字、“_”、“.”的字串
          function isRegisterUserName(s)
          {
          var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
          if (!patrn.exec(s)) return false
          return true
          }


          //校驗(yàn)用戶姓名:只能輸入1-30個(gè)以字母開頭的字串
          function isTrueName(s)
          {
          var patrn=/^[a-zA-Z]{1,30}$/;
          if (!patrn.exec(s)) return false
          return true
          }


          //校驗(yàn)密碼:只能輸入6-20個(gè)字母、數(shù)字、下劃線
          function isPasswd(s)
          {
          var patrn=/^(\w){6,20}$/;
          if (!patrn.exec(s)) return false
          return true
          }


          //校驗(yàn)普通電話、傳真號(hào)碼:可以“+”開頭,除數(shù)字外,可含有“-”
          function isTel(s)
          {
          //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;
          var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
          if (!patrn.exec(s)) return false
          return true
          }


          //校驗(yàn)手機(jī)號(hào)碼:必須以數(shù)字開頭,除數(shù)字外,可含有“-”
          function isMobil(s)
          {
          var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
          if (!patrn.exec(s)) return false
          return true
          }


          //校驗(yàn)郵政編碼
          function isPostalCode(s)
          {
          //var patrn=/^[a-zA-Z0-9]{3,12}$/;
          var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
          if (!patrn.exec(s)) return false
          return true
          }


          //校驗(yàn)搜索關(guān)鍵字
          function isSearch(s)
          {
          var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,19}$/;
          if (!patrn.exec(s)) return false
          return true
          }


          function isIP(s) //by zergling
          {
          var patrn=/^[0-9.]{1,20}$/;
          if (!patrn.exec(s)) return false
          return true
          }

          posts - 131, comments - 12, trackbacks - 0, articles - 32

          Copyright © yukui

          主站蜘蛛池模板: 汝城县| 陆川县| 石河子市| 通化市| 青川县| 西贡区| 屏东市| 突泉县| 镶黄旗| 汉沽区| 灵台县| 监利县| 荥经县| 邓州市| 焦作市| 滨海县| 达尔| 漯河市| 康平县| 安多县| 禹城市| 嘉荫县| 甘谷县| 浦江县| 邹城市| 耿马| 阳谷县| 茶陵县| 牟定县| 正定县| 永吉县| 启东市| 罗江县| 涪陵区| 左贡县| 福泉市| 安化县| 调兵山市| 沛县| 迭部县| 建阳市|