javascript验证

Posted on 2007-11-18 00:13 yukui 阅读(182) 评论(0)  编辑  收藏 所属分类: 技术
格式
null 是否为空判断
num 数字
ab 字母
chs 汉字
bit 位数
phone 电话格式
email 电子邮件格式
http 格式
*/
function check_null(check_obj){
  var str = '';
  for(i = 0; i < check_obj.length; i++) {
    str = str + ' ';
  }
  return (str == check_obj);
}

function check_num(check_obj){
    var i,j,strTemp;
    //abcdefghijklmnopqrstuvwxyz
    strTemp="0123456789";
    if ( check_obj.length== 0)
        return false;
    for (i=0;i<check_obj.length;i++)
    {
       j=strTemp.indexOf(check_obj.charAt(i));
       if (j==-1)
       {
         return false;
       }
    }
    return true;
}

function check_ab(check_obj){
 
    var i,j,strTemp;
    
    strTemp="abcdefghijklmnopqrstuvwxyz";
    if ( check_obj.length== 0)
        return false;
    for (i=0;i<check_obj.length;i++)
    {
       j=strTemp.indexOf(check_obj.charAt(i));
       if (j==-1)
       {
         return false;
       }
    }
    return true;
}

function check_chs(check_obj){
    if(check_obj.search(/[^\x00-\x80]/)>=0){
     return true;
    }else{
        return false;
    }
     
}

function check_bit(check_obj,bit_obj){
  arry_str = bit_obj.split('_');
  var obj_length = check_obj.length;
  
  switch(arry_str[2]){
   case ">":
        if(obj_length>arry_str[1]){
          return true;
        }
        break;
   case "<":
        if(obj_length<arry_str[1]){
          return true;
        }
        break;
   case ">=":
        if(obj_length>=arry_str[1]){
          return true;
        }
        break;
   case "<=":
        if(obj_length<=arry_str[1]){
          return true; 
        }
        break;
  }
  return false;
}

function check_phone(check_obj){
 
  if(check_obj.search(/[0-9]{4}\-[0-9]*/)>=0){
   return true;
    }else{
        return false;
    }
  
}

function check_email(check_obj){
    
    if(check_obj.search(/^[\w-]+@[\w-]+\.[A-Za-z0-9]{2,}$/)>=0){
        return true;
      }else{
        return false;
      }
}

function check_http(check_obj){
    if(check_obj.search(/^https?:\/\/((\w|-)+\.)+\w+\/?$/i)>=0){
        return true;
        }else{
        return false;
        }
}

/*************************************************
* 函数用途:自动检测表单
* 参数:form_name 要提交的form对象名字
*      input_arry 要检测input控件对象组
*      input_arry参数数组的第一个位置是
*      控件的名字,第二个位置是如果出错
*      要显示的错误信息字符串,第三个位
*      置是检测范围标志,如果多标志可以
*      用,分开。例如'num,null'不能空,
*      并且只能为数字
*/
function auto_check_form(form_name,input_arry){
 
 for(var num in input_arry){
     
     alert('ok');
     alert_flag=0;
     arry_str = input_arry[num][2].split(',');
   
     
     for(var es_num in arry_str){
       
       switch(arry_str[es_num]){
         case "null":
              if(check_null(input_arry[num][0].value)==true){
                alert_flag=1; 
              }
              break;
         case "num":
              if(check_num(input_arry[num][0].value)==false){
                alert_flag=1;
              }
              break
         case "ab":
              if(check_ab(input_arry[num][0].value)==false){
                alert_flag=1;
              }
              break;
         case "chs":
             if(check_chs(input_arry[num][0].value)==false){
               alert_flag=1;
             }
              break;
         case "phone":
             if(check_phone(input_arry[num][0].value)==false){
              alert_flag=1;
             }
              break;
         case "email":
             if(check_email(input_arry[num][0].value)==false){
                 alert_flag=1;
             }
              break;
         case "http":
             if(check_http(input_arry[num][0].value)==false){
              alert_flag=1;
             }
              break;
         default:
            
       }
       if(arry_str[es_num].search(/bit_*/)>=0){
        if(check_bit(input_arry[num][0].value,arry_str[es_num])==false){
          alert_flag=1;
        }
       }       
     }
     if(alert_flag==1){
         alert(input_arry[num][1]);
         return 0;
     }
   
 
 }
 form_name.submit();
   
}


注:checkspace函数是检测是否为空

html方调用通过数组和控件对象名字,对比模式的方式来得到更多的判断支持,比如第2个参数中数组的第3个参数可以这样写:

onclick=“auto_check_form(test1,
[
 [text_1,'不能空并且只能是数字','null,num'],
 [text_2,'不能为空只能为字母','null,ab'],
 [text_3,'不能小于9位','null,num,bit_9_>'],
 [text_4,'电话号码输入错误','null,phone,bit_13_<='],
 [text_5,'请输入汉字做名字','null,chs,bit_6_>']
]);">“

null,phone,bit_13_<=这些都是匹配符。

¢//校验是否全由数字组成
function isDigit(s)
{
    var patrn=/^[0-9]{1,20}$/;
    if (!patrn.exec(s)) return false
    return true
}

//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串
function isRegisterUserName(s)
{
    var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
    if (!patrn.exec(s)) return false
    return true
}

//校验用户姓名:只能输入1-30个以字母开头的字串
function isTrueName(s)
{
    var patrn=/^[a-zA-Z]{1,30}$/;
    if (!patrn.exec(s)) return false
    return true
}

//校验密码:只能输入6-20个字母、数字、下划线
function isPasswd(s)
{
    var patrn=/^(\w){6,20}$/;
    if (!patrn.exec(s)) return false
    return true
}

//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”
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
}

//校验手机号码:必须以数字开头,除数字外,可含有“-”
function isMobil(s)
{
    var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
    if (!patrn.exec(s)) return false
    return true
}

//校验邮政编码
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
}

//校验搜索关键字
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
}

¢//校验是否全由数字组成
function isDigit(s)
{
    var patrn=/^[0-9]{1,20}$/;
    if (!patrn.exec(s)) return false
    return true
}

//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串
function isRegisterUserName(s)
{
    var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
    if (!patrn.exec(s)) return false
    return true
}

//校验用户姓名:只能输入1-30个以字母开头的字串
function isTrueName(s)
{
    var patrn=/^[a-zA-Z]{1,30}$/;
    if (!patrn.exec(s)) return false
    return true
}

//校验密码:只能输入6-20个字母、数字、下划线
function isPasswd(s)
{
    var patrn=/^(\w){6,20}$/;
    if (!patrn.exec(s)) return false
    return true
}

//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”
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
}

//校验手机号码:必须以数字开头,除数字外,可含有“-”
function isMobil(s)
{
    var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
    if (!patrn.exec(s)) return false
    return true
}

//校验邮政编码
function isPostalCode(s)
{
    //var patrn=/^[a-zA-Z0-9]{3,12}$/;
    var patrn=/^[a-zA-Z0-9 ]{3,12}$/;

/*********************************************************************************
 * FUNCTION:  isBetween
 * PARAMETERS:  val  AS any value
 *     lo  AS Lower limit to check
 *     hi  AS Higher limit to check
 * CALLS:   NOTHING
 * RETURNS:  TRUE if val is between lo and hi both inclusive, otherwise false.
 **********************************************************************************/
 function isBetween (val, lo, hi) {
  if ((val < lo) || (val > hi)) { return(false); }
  else { return(true); }
 }
 /*********************************************************************************
 * FUNCTION:  isDate checks a valid date
 * PARAMETERS:  theStr  AS String
 * CALLS:   isBetween, isInt
 * RETURNS:  TRUE if theStr is a valid date otherwise false.
 **********************************************************************************/
 function isDate (theStr) {
  var the1st = theStr.indexOf('-');
  var the2nd = theStr.lastIndexOf('-');
  
  if (the1st == the2nd) { return(false); }
  else {
   var y = theStr.substring(0,the1st);
   var m = theStr.substring(the1st+1,the2nd);
   var d = theStr.substring(the2nd+1,theStr.length);
   var maxDays = 31;
   
   if (isInt(m)==false || isInt(d)==false || isInt(y)==false) {
    return(false); }
   else if (y.length < 4) { return(false); }
   else if (!isBetween (m, 1, 12)) { return(false); }
   else if (m==4 || m==6 || m==9 || m==11) maxDays = 30;
   else if (m==2) {
    if (y % 4 > 0) maxDays = 28;
    else if (y % 100 == 0 && y % 400 > 0) maxDays = 28;
   else maxDays = 29;
   }
   if (isBetween(d, 1, maxDays) == false) { return(false); }
   else { return(true); }
  }
 }
 /********************************************************************************
 *   FUNCTION:       Compare Date! Which is the latest!
 *   PARAMETERS:     lessDate,moreDate AS String
 *   CALLS:          isDate,isBetween
 *   RETURNS:        TRUE if lessDate<moreDate
 *********************************************************************************/
 function isComdate (lessDate , moreDate)
 {
  if (!isDate(lessDate)) { return(false);}
  if (!isDate(moreDate)) { return(false);}
  var less1st = lessDate.indexOf('-');
  var less2nd = lessDate.lastIndexOf('-');
  var more1st = moreDate.indexOf('-');
  var more2nd = moreDate.lastIndexOf('-');
  var lessy = lessDate.substring(0,less1st);
  var lessm = lessDate.substring(less1st+1,less2nd);
  var lessd = lessDate.substring(less2nd+1,lessDate.length);
  var morey = moreDate.substring(0,more1st);
  var morem = moreDate.substring(more1st+1,more2nd);
  var mored = moreDate.substring(more2nd+1,moreDate.length);
  var Date1 = new Date(lessy,lessm,lessd); 
  var Date2 = new Date(morey,morem,mored); 
  if (Date1>Date2) { return(false);}
   return(true); 
   
 }

 /*********************************************************************************
 * FUNCTION isEmpty checks if the parameter is empty  or null
 * PARAMETER str  AS String
 **********************************************************************************/
 function isEmpty (str) {
     if ((str==null)||(str.length==0)) return true;
     else return(false);
 }


 /*********************************************************************************
 * FUNCTION isAllEmpty checks if all the character is empty  or null
 * PARAMETER str  AS String
 **********************************************************************************/
 function isAllEmpty (str)
  {
  if ((str==null)||(str.length==0)) return true;
  else
   {
   for (var i=0; i<str.length; i++)
    {
    if (str.substring(i,i+1)!=" ") return false;
    }
   return true
   }
  }

 /*********************************************************************************
 * FUNCTION:  isInt
 * PARAMETER:  theStr AS String 
 * RETURNS:  TRUE if the passed parameter is an integer, otherwise FALSE
 * CALLS:   isDigit
 **********************************************************************************/
 function isInt (theStr) {
  var flag = true;

  if (isEmpty(theStr)) { flag=false; }
  else
  { for (var i=0; i<theStr.length; i++) {
    if (isDigit(theStr.substring(i,i+1)) == false) {
     flag = false; break;
    }
   }
  }
  return(flag);
 }

 /*********************************************************************************
 * FUNCTION:  isReal
 * PARAMETER: heStr AS String 
          decLen AS Integer (how many digits after period)
 * RETURNS:  TRUE if theStr is a float, otherwise FALSE
 * CALLS:   isInt
 **********************************************************************************/
 function isReal (theStr, decLen) {
  var dot1st = theStr.indexOf('.');
  var dot2nd = theStr.lastIndexOf('.');
  var OK = true;
  if (isEmpty(theStr)) return false;

  if (dot1st == -1) {
   if (!isInt(theStr)) return(false);
   else return(true);
  }
  else if (dot1st != dot2nd) return (false);
  else if (dot1st==0) return (false);
  else {
   var intPart = theStr.substring(0, dot1st);
   var decPart = theStr.substring(dot2nd+1);

   if (decPart.length > decLen) return(false);
   else if (!isInt(intPart) || !isInt(decPart)) return (false);
   else if (isEmpty(decPart)) return (false);
   else return(true);
  }
 }

 /*********************************************************************************
 * FUNCTION:  isEmail
 * PARAMETER:  String (Email Address)
 * RETURNS:  TRUE if the String is a valid Email address
 *     FALSE if the passed string is not a valid Email Address
 * EMAIL FORMAT: AnyName@EmailServer e.g; webmaster@hotmail.com
 *     @ sign can appear only once in the email address.
 *********************************************************************************/
 function isEmail (theStr) {
  var atIndex = theStr.indexOf('@');
  var dotIndex = theStr.indexOf('.', atIndex);
  var flag = true;
  theSub = theStr.substring(0, dotIndex+1)

  if ((atIndex < 1)||(atIndex != theStr.lastIndexOf('@'))||(dotIndex < atIndex + 2)||(theStr.length <= theSub.length)) 
  { return(false); }
  else { return(true); }
 }
 /*********************************************************************************
 * FUNCTION:  newWindow
 * PARAMETERS:  doc   -> Document to open in the new window
      hite  -> Height of the new window
      wide  -> Width of the new window
      bars -> 1-Scroll bars = YES 0-Scroll Bars = NO
      resize  -> 1-Resizable = YES 0-Resizable = NO
 * CALLS:   NONE
 * RETURNS:  New window instance
 **********************************************************************************/
 function newWindow (doc, wide, hite, bars, resize) {
  var opt="toolbar=0,location=0,directories=0,status=0,menubar=0,";
  var l = Math.floor((screen.width-wide)/2);
  var t = Math.floor((screen.height-hite)/2);
  opt+=("scrollbars="+bars+",");
  opt+=("resizable="+resize+",");
  opt+=("width="+wide+",");
  opt+=("height="+hite+",");
  opt+=("top="+t+",");
  opt+=("left="+l);
  winHandle=window.open(doc,'',opt);
  return;
 }

 //校验数字:0-9数字的组合
 function isDigit(s)
 {
  var patrn=/^[0-9]{1,20}$/;
  if (!patrn.exec(s)) return false
  return true
 }

只有注册用户登录后才能发表评论。


网站导航:
 

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

Copyright © yukui