一些經常用的JS表單驗證

//是否是數字格式的字符串
function isDigit(str)
{
    return /^/d+$/.test(str);
}
//是否是隻有26個大小寫英文字符的字符串
function isAlpha(str)
{
    return /^[a-zA-Z]+$/.test(str);
}

//是否只含有大寫英文字符
function isUpper(str)
{
    return /^[A-Z]+$/.test(str);
}

//是否只含有小寫英文字符
function isLower(str)
{
    return /^[a-z]+$/.test(str);
}

//是否只含有26個大小寫英文字符和數字字符的字符串
function isAlnum(str)
{
    return /^[a-zA-Z/d]+$/.test(str);
}

//是否是可用於註冊登錄名的字符(26個大小寫英文字符、數字、下劃線、橫線)
function isLoginName(str)
{
    return /^[a-zA-Z/d_/-]+$/.test(str);
}

//是否是可用於註冊密碼的字符(26個大小寫英文字符、數字、下劃線、橫線)
function isPassword(str)
{
    return /^[a-zA-Z/d_/-]+$/.test(str);
}

//是否是整數
function isInt(str)
{
    return /^[+-]?/d+$/.test(str);
}

//是否是浮點數
function isFloat(str)
{
   return /^[+-]?(0/./d+|0|[1-9]/d*(/./d+)?)$/.test(str);
}

//是否是郵件地址格式
function isEmail(str)
{
    return /^([/w/-/.])+@([/w-])+(/.([a-zA-Z0-9]){2,3}){1,2}$/.test(str);
    ///^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$/;
}

//是否是手機號碼格式
function isHandsetNumber(str)
{
  return /^/d{11}$/.test(str);
}

//是否是身份證號碼格式
function isID(str)
{
  return /^[a-zA-Z/d]{15,18}$/.test(str);
}

//是否閏年
function isLeapYear(str)
{
    if (isNaN(str)) return false;
    var year = parseInt(str, 10);
    return ((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0))
}

//驗證身份證號碼格式
function checkId(value){
   if(value.length > 18 || value.length < 15){
      return false;
   }
   if(!isAlnum(value)){
     return false;
   }
   return true;
}
//是否是日期格式(YYYY-MM-DD)
function isDate(str)
{
    if (str.length == 10)
    {
        var dateRegExpStr = "//d{4}-(((01|03|05|07|08|10|12)-(0[1-9]|[12]//d|3[01]))|((04|06|09|11)-(0[1-9]|[12]//d|30))|(02-";
        dateRegExpStr += isLeapYear(str.substring(0, 4)) ? "(0[1-9]|[12]//d)" : "(0[1-9]|1//d|2[0-8])";
        dateRegExpStr += "))";

        var dateRegExp = new RegExp(dateRegExpStr);

        return dateRegExp.test(str);
    }
    return false;
}

//是否是日期格式(YYYY-MM)
function isYearMonth(str)
{
    return /^/d{4}-(0[1-9]|1[0-2])$/.test(str);
}

//是否是時間格式(hh:mm:ss)
function isTime(str)
{
    return /^([01]/d|2[0-3]):[0-5]/d:[0-5]/d$/.test(str);
}

//是否是日期時間格式(YYYY-MM-DD hh:mm:ss)
function isDateTime(str)
{
    return (str.length == 19) ? (isDate(str.substring(0, 10)) && isTime(str.substring(11, 19))) : false;
}

//獲得某年的某個月有多少天 或者說 某年某月的最後一天是多少。
function getDays(year, month)
{
    switch (parseInt(month, 10))
    {
        case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
        case 4: case 6: case 9: case 11: return 30;
        case 2: return isLeapYear(year) ? 29 : 28;
    }
}

//計算兩個日期相差天數(sDate1 - sDate2),sDate1和sDate2是"yyyy-mm-dd"格式
function dateDiff(sDate1, sDate2)
{
    var aDate, oDate1, oDate2, iDays
    aDate = sDate1.split("-")
    oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])  //轉換爲12-18-2002格式
    aDate = sDate2.split("-")
    oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])
    iDays = parseInt((oDate1 - oDate2) / 1000 / 60 / 60 /24)  //把相差的毫秒數轉換爲天數
    return iDays
}

//是否是IP地址格式(用點"."分割的四組數字中,第一組數字範圍1-223,其他三組數字範圍0-255)
function isIP(str)
{
    return /^(0?0?[1-9]|0?[1-9]/d|1/d/d|2[01]/d|22[0-3])(/.([01]?/d?/d|2[0-4]/d|25[0-5])){3}$/.test(str);
}

//對於IP地址中的每組數字如果不足3位,則前面補零。例如:"192.168.1.22",結果"192.168.001.022"
function getFullIP(ip)
{
    var nums = ip.split(".");
    var fullIP = "";
    fullIP += repeatString("0", 3 - nums[0].length) + nums[0];
    for (var i = 1; i < nums.length; i++)
        fullIP += "." + repeatString("0", 3 - nums[i].length) + nums[i];
    return fullIP;
}

//驗證是否是MAC地址(用英文冒號":"分割的6組兩位字符,其中字符只能是英文字符或數字,例如:00:03:0D:61:62:7C)
function isMAC(mac)
{
    return /^[/dA-Za-z]{2}(/:[/dA-Za-z]{2}){5}$/.test(mac);
}

/*
獲得repeat個字符串str的連接結果
@param str 要重複的字符串
@param repeat 重複的次數
*/
function repeatString(str, repeat)
{
    var repeatStr = "";
    for (var i = 0; i < repeat; i++)
        repeatStr += str;
    return repeatStr;
}

//是否包含非法字符,針對文件名。(/、/、|、"、?、*、:、<、>)
function containInvalidChar(str)
{   
    return /['/n]/.test(str);
}


//獲得字符串對象的字節數
function bytes(str)
{
    return str.replace(/[^/x00-/xff]/g,"***").length;
}

//去除字符串兩邊的空格
String.prototype.trim = function()
{
    return this.replace(/(^/s*)|(/s*$)/g, "");
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章