分享

JS 验证字符串合法性、判断字符内容

 昵称8440196 2012-04-25
JS 验证字符串合法性、判断字符内容
2009年06月18日 星期四 12:30

/**
* 浏览器脚本函数列表
* boolean isNumber(numStr)         :判断字符串是否是数值格式
* boolean isValidString(szStr)     :判断字符串中是否含有非法字符"'\"><"
* boolean isBlank(szStr)           :判断字符串是否为空字符串(或不包含除空格外的其他字符)
* String trim(szStr)               :去掉字符串两端的空格
* boolean isDateStr(ds)             :判断字符串是否为合法的日期格式:YYYY-MM-DD HH:MM:SS
*                                     或 YYYY-MM-DD 或 HH:MM:SS
* boolean isDatePart(dateStr)       :判断字符串是否为合法的日期格式:YYYY-MM-DD
* boolean isTimePart(dateStr)       :判断字符串是否为合法的时间格式:HH:MM:SS
* boolean chk_email(emailAddress)   :判断邮件地址格式是否合法

* int strlen(str) :精确判断字符串长度,包括中文和英文混合  

* boolean isChinese(str):判断字符是否为中文
* boolean isKong(szStr):判断字符串中是否含有空格(去掉字符串前后空格后)
*/
/***********************************************************************
* 判断一个字符串是否是数值格式
*/
function isNumber(numStr){
   return !isNaN(numStr);
}

/***********************************************************************
* 判断一个字符串中是否含有下列非法字符
*/
voidChar = "'\"><";

function isValidString(szStr){
   for(i = 0 ; i < voidChar.length; i ++){
     aChar = voidChar.substring(i, i + 1);
     if(szStr.indexOf(aChar) > -1){
       return false;
     }
   }
   return true;
}

/***********************************************************************
* 判断一个字符串是否为空字符串
*/
function isBlank(szStr){
   if(szStr.length < 1){
     return true;
   }

   for(i = 0; i < szStr.length; i ++){
     if(szStr.substring(i, i + 1) != ' '){
       return false;
     }
   }
   return true;
}

/***********************************************************************
* 去掉一个字符串两端的空格
*/
function trim(szStr){
   //去掉字符串头部的空格
   while(szStr.length > 0){
     if( szStr.substring(0, 1) != ' '){
       break;
     }else{
       szStr = szStr.substring(1);
     }
   }

   //去掉字符串尾部的空格
   while(szStr.length > 0){
     if( szStr.substring(szStr.length - 1, szStr.length) != ' '){
       break;
     }else{
       szStr = szStr.substring(0,szStr.length - 1);
     }
   }
   return szStr;
}

/***********************************************************************
* 判断一个字符串是否为合法的日期格式:YYYY-MM-DD HH:MM:SS
* 或 YYYY-MM-DD 或 HH:MM:SS
*/
function isDateStr(ds){
   parts = ds.split(' ');
   switch(parts.length){
     case 2:
       if(isDatePart( parts[0] ) == true && isTimePart( parts[1] )){
         return true;
       }else{
         return false;
       }
     case 1:
       aPart = parts[0];
       if(aPart.indexOf(':') > 0 ){
         return isTimePart(aPart);
       }else{
         return isDatePart(aPart);
       }
     default:
       return false;
   }
}

/***********************************************************************
* 判断一个字符串是否为合法的日期格式:YYYY-MM-DD
*/
function isDatePart(dateStr){
   var parts;

   if(dateStr.indexOf("-") > -1){
     parts = dateStr.split('-');
   }else if(dateStr.indexOf("/") > -1){
     parts = dateStr.split('/');
   }else{
     return false;
   }

   if(parts.length < 3){
   //日期部分不允许缺少年、月、日中的任何一项
     return false;
   }

   for(i = 0 ;i < 3; i ++){
   //如果构成日期的某个部分不是数字,则返回false
     if(isNaN(parts)){
       return false;
     }
   }

   y = parts[0];//年
   m = parts[1];//月
   d = parts[2];//日

   if(y > 3000){
     return false;
   }

   if(m < 1 || m > 12){
     return false;
   }

   switch(d){
     case 29:
       if(m == 2){
       //如果是2月份
         if( (y / 100) * 100 == y && (y / 400) * 400 != y){
           //如果年份能被100整除但不能被400整除 (即闰年)
         }else{
           return false;
         }
       }
       break;
     case 30:
       if(m == 2){
       //2月没有30日
         return false;
       }
       break;
     case 31:
       if(m == 2 || m == 4 || m == 6 || m == 9 || m == 11){
       //2、4、6、9、11月没有31日
         return false;
       }
       break;
     default:

   }
   return true;
}

/***********************************************************************
* 判断一个字符串是否为合法的时间格式:HH:MM:SS
*/
function isTimePart(timeStr){
   var parts;

   parts = timeStr.split(':');
   if(parts.length < 2){
   //日期部分不允许缺少小时、分钟中的任何一项
     return false;
   }

   for(i = 0 ;i < parts.length; i ++){
   //如果构成时间的某个部分不是数字,则返回false
     if(isNaN(parts)){
       return false;
     }
   }

   h = parts[0];//年
   m = parts[1];//月

   if( h < 0 || h > 23){
   //限制小时的范围
     return false;
   }
   if( m < 0 || h > 59){
   //限制分钟的范围
     return false;
   }

   if(parts.length > 2){
     s = parts[2];//日

     if( s < 0 || s > 59){
     //限制秒的范围
       return false;
     }
   }

   return true;
}

function chk_email(email){
   invalid = "";

   if (!email){}
   //invalid = "请输入您的Email地址。";

   else {
     if ( (email.indexOf("@") == -1) || (email.indexOf(".") == -1) )
     invalid += "\n\nEmail地址不合法。应当包含[email='@']%27@%27[/email]和'.';例如('.com')。请检查后再递交。";

     if (email.indexOf("your email here") > -1)
     invalid += "\n\nEmail地址不合法,请检测您的Email地址,在域名内应当包含[email='@']%27@%27[/email]和'.';例如('.com')。";

     if (email.indexOf("\\") > -1)
     invalid += "\n\nEmail地址不合法,含有非法字符(\\)。";

     if (email.indexOf("/") > -1)
     invalid += "\n\nEmail地址不合法,含有非法字符(/)。";

     if (email.indexOf("'") > -1)
     invalid += "\n\nEmail地址不合法,含有非法字符(')。";

     if (email.indexOf("!") > -1)
     invalid += "\n\nEmail地址不合法,含有非法字符(!)。";

     if ( (email.indexOf(",") > -1) || (email.indexOf(";") > -1) )
     invalid += "\n\n只输入一个Email地址,不要含有分号和逗号。";

     if (email.indexOf("?subject") > -1)
     invalid += "\n\n不要加入'?subject=...'。";

   }
   if (invalid == ""){
     return true;
   }else{
     alert("输入的Email可能包含错误:" + invalid);
     return false;
   }
}

//精确判断字符串长度

function isChinese(str)
{
   var lst = /[u00-uFF]/;      
   return !lst.test(str);    
}
function strlen(str)
{
   var strlength=0;
   for (i=0;i<str.length;i++)
{
     if (isChinese(str.charAt(i))==true)
         strlength=strlength + 2;
     else
         strlength=strlength + 1;
}
return strlength;
}

//判断字符串中是否存在空格
function isKong(szStr)
{
     //trim方法为上面去掉字符串首尾空格的方法,不是系统方法
     var str=trim(szStr);
     if(strlen(str)>0)
     {
         if(str.indexOf(' ')>=0)
         {
             return true;
         }
     }
     return false;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多