JS判断字符串格式是否合法

来源:互联网 发布:dotamax 不能看数据了 编辑:程序博客网 时间:2024/05/14 08:38

/**
* 浏览器脚本函数列表
* 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) :判断邮件地址格式是否合法
*/

/***********************************************************************
* 判断一个字符串是否是数值格式
*/
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[i])){
      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[i])){
      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地址不合法。应当包含'@'和'.';例如('.com')。请检查后再递交。";

    if (email.indexOf("your email here") > -1)
    invalid += "/n/nEmail地址不合法,请检测您的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;
}
}

原创粉丝点击