Js 最全的验证类validate.js

function isIP(strIP) {
	if (isNull(strIP))
		return false;
	var re = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g // 匹配IP地址的正则表达式
	if (re.test(strIP)) {
		if (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256
				&& RegExp.$4 < 256)
			return true;
	}
	return false;
}

/*
 * 用途:检查输入字符串是否为空或者全部都是空格 输入:str 返回: 如果全是空返回true,否则返回false
 */
function isNull(str) {
	if (str == "")
		return true;
	var regu = "^[ ]+$";
	var re = new RegExp(regu);
	return re.test(str);
}

/*
 * 用途:检查输入对象的值是否符合整数格式 输入:str 输入的字符串 返回:如果通过验证返回true,否则返回false
 * 
 */
function isInteger(str) {
	var regu = /^[-]{0,1}[0-9]{1,}$/;
	return regu.test(str);
}

/*
 * 用途:检查输入手机号码是否正确 输入: s:字符串 返回: 如果通过验证返回true,否则返回false
 * 
 */
function isMobile(s) {
	var regu = /^1[3|4|5|8][0-9]\d{4,8}$/;
	var re = new RegExp(regu);
	return re.test(s);
}

/*
 * 用途:检查输入字符串是否符合正整数格式 输入: s:字符串 返回: 如果通过验证返回true,否则返回false
 * 
 */
function isNumber(s) {
	var regu = "^[0-9]+$";
	var re = new RegExp(regu);
	if (s.search(re) != -1) {
		return true;
	} else {
		return false;
	}
}

/*
 * 用途:检查输入字符串是否是带小数的数字格式,可以是负数 输入: s:字符串 返回: 如果通过验证返回true,否则返回false
 * 
 */
function isDecimal(str) {
	if (isInteger(str))
		return true;
	var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
	if (re.test(str)) {
		if (RegExp.$1 == 0 && RegExp.$2 == 0)
			return false;
		return true;
	} else {
		return false;
	}
}

/*
 * 用途:检查输入对象的值是否符合端口号格式 输入:str 输入的字符串 返回:如果通过验证返回true,否则返回false
 * 
 */
function isPort(str) {
	return (isNumber(str) && str < 65536);
}

/*
 * 用途:检查输入对象的值是否符合E-Mail格式 输入:str 输入的字符串 返回:如果通过验证返回true,否则返回false
 * 
 */
function isEmail(str) {
	var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;
	if (myReg.test(str))
		return true;
	return false;
}

/*
 * 用途:检查输入字符串是否符合金额格式 格式定义为带小数的正数,小数点后最多三位 输入: s:字符串 返回: 如果通过验证返回true,否则返回false
 * 
 */
function isMoney(s) {
	var regu = "^[0-9]+[\.][0-9]{0,3}$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
}
/*
 * 用途:检查输入字符串是否只由英文字母和数字和下划线组成 输入: s:字符串 返回: 如果通过验证返回true,否则返回false
 * 
 */
function isNumberOr_Letter(s) {// 判断是否是数字或字母

	var regu = "^[0-9a-zA-Z\_]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
}
/*
 * 用途:检查输入字符串是否只由英文字母和数字组成 输入: s:字符串 返回: 如果通过验证返回true,否则返回false
 * 
 */
function isNumberOrLetter(s) {// 判断是否是数字或字母

	var regu = "^[0-9a-zA-Z]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
}
/*
 * 用途:检查输入字符串是否只由汉字、字母、数字组成 输入: value:字符串 返回: 如果通过验证返回true,否则返回false
 * 
 */
function isChinaOrNumbOrLett(s) {// 判断是否是汉字、字母、数字组成

	var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$";
	var re = new RegExp(regu);
	if (re.test(s)) {
		return true;
	} else {
		return false;
	}
}

/*
 * 用途:判断是否是日期 输入:date:日期;fmt:日期格式 返回:如果通过验证返回true,否则返回false
 */
function isDate(date, fmt) {
	if (fmt == null)
		fmt = "yyyyMMdd";
	var yIndex = fmt.indexOf("yyyy");
	if (yIndex == -1)
		return false;
	var year = date.substring(yIndex, yIndex + 4);
	var mIndex = fmt.indexOf("MM");
	if (mIndex == -1)
		return false;
	var month = date.substring(mIndex, mIndex + 2);
	var dIndex = fmt.indexOf("dd");
	if (dIndex == -1)
		return false;
	var day = date.substring(dIndex, dIndex + 2);
	if (!isNumber(year) || year > "2100" || year < "1900")
		return false;
	if (!isNumber(month) || month > "12" || month < "01")
		return false;
	if (day > getMaxDay(year, month) || day < "01")
		return false;
	return true;
}

function getMaxDay(year, month) {
	if (month == 4 || month == 6 || month == 9 || month == 11)
		return "30";
	if (month == 2)
		if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
			return "29";
		else
			return "28";
	return "31";
}

/*
 * 用途:字符1是否以字符串2结束 输入:str1:字符串;str2:被包含的字符串 返回:如果通过验证返回true,否则返回false
 * 
 */
function isLastMatch(str1, str2) {
	var index = str1.lastIndexOf(str2);
	if (str1.length == index + str2.length)
		return true;
	return false;
}

/*
 * 用途:字符1是否以字符串2开始 输入:str1:字符串;str2:被包含的字符串 返回:如果通过验证返回true,否则返回false
 * 
 */
function isFirstMatch(str1, str2) {
	var index = str1.indexOf(str2);
	if (index == 0)
		return true;
	return false;
}

/*
 * 用途:字符1是包含字符串2 输入:str1:字符串;str2:被包含的字符串 返回:如果通过验证返回true,否则返回false
 * 
 */
function isMatch(str1, str2) {
	var index = str1.indexOf(str2);
	if (index == -1)
		return false;
	return true;
}

/*
 * 用途:检查输入的起止日期是否正确,规则为两个日期的格式正确, 且结束如期>=起始日期 输入: startDate:起始日期,字符串
 * endDate:结束如期,字符串 返回: 如果通过验证返回true,否则返回false
 * 
 */
function checkTwoDate(startDate, endDate) {
	if (!isDate(startDate)) {
		alert("起始日期不正确!");
		return false;
	} else if (!isDate(endDate)) {
		alert("终止日期不正确!");
		return false;
	} else if (startDate > endDate) {
		alert("起始日期不能大于终止日期!");
		return false;
	}
	return true;
}

/*
 * 用途:检查输入的Email信箱格式是否正确 输入: strEmail:字符串 返回: 如果通过验证返回true,否则返回false
 * 
 */
function checkEmail(strEmail) {
	// var emailReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;
	var emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
	if (emailReg.test(strEmail)) {
		return true;
	} else {
		return false;
	}
}

/*
 * 用途:检查输入的电话号码格式是否正确 输入: strPhone:字符串 返回: 如果通过验证返回true,否则返回false
 * 
 */
function isTelephone(str){
var result=str.match(/\d{3}-\d{8}|\d{4}-\d{7}/);
if(result==null) return false;
return true;
}

/*
 * 用途:检查复选框被选中的数目 输入: checkboxID:字符串 返回: 返回该复选框中被选中的数目
 * 
 */

function checkSelect(checkboxID) {
	var check = 0;
	var i = 0;
	if (document.all(checkboxID).length > 0) {
		for (i = 0; i < document.all(checkboxID).length; i++) {
			if (document.all(checkboxID).item(i).checked) {
				check += 1;
			}

		}
	} else {
		if (document.all(checkboxID).checked)
			check = 1;
	}
	return check;
}

/*
 * 用途:验证QQ
 * 
 */

function isQQ(qq){
	var qqReg = /^[1-9]\d{4,12}$/;
	if (qqReg.test(qq)) {
		return true;
	} else {
		return false;
	}

}
function getTotalBytes(varField) {
	if (varField == null)
		return -1;

	var totalCount = 0;
	for (i = 0; i < varField.value.length; i++) {
		if (varField.value.charCodeAt(i) > 127)
			totalCount += 2;
		else
			totalCount++;
	}
	return totalCount;
}

function getFirstSelectedValue(checkboxID) {
	var value = null;
	var i = 0;
	if (document.all(checkboxID).length > 0) {
		for (i = 0; i < document.all(checkboxID).length; i++) {
			if (document.all(checkboxID).item(i).checked) {
				value = document.all(checkboxID).item(i).value;
				break;
			}
		}
	} else {
		if (document.all(checkboxID).checked)
			value = document.all(checkboxID).value;
	}
	return value;
}

function getFirstSelectedIndex(checkboxID) {
	var value = -2;
	var i = 0;
	if (document.all(checkboxID).length > 0) {
		for (i = 0; i < document.all(checkboxID).length; i++) {
			if (document.all(checkboxID).item(i).checked) {
				value = i;
				break;
			}
		}
	} else {
		if (document.all(checkboxID).checked)
			value = -1;
	}
	return value;
}

function selectAll(checkboxID, status) {

	if (document.all(checkboxID) == null)
		return;

	if (document.all(checkboxID).length > 0) {
		for (i = 0; i < document.all(checkboxID).length; i++) {

			document.all(checkboxID).item(i).checked = status;
		}
	} else {
		document.all(checkboxID).checked = status;
	}
}

function selectInverse(checkboxID) {
	if (document.all(checkboxID) == null)
		return;

	if (document.all(checkboxID).length > 0) {
		for (i = 0; i < document.all(checkboxID).length; i++) {
			document.all(checkboxID).item(i).checked = !document
					.all(checkboxID).item(i).checked;
		}
	} else {
		document.all(checkboxID).checked = !document.all(checkboxID).checked;
	}
}

function checkDate(value) {
	if (value == '')
		return true;
	if (value.length != 8 || !isNumber(value))
		return false;
	var year = value.substring(0, 4);
	if (year > "2100" || year < "1900")
		return false;

	var month = value.substring(4, 6);
	if (month > "12" || month < "01")
		return false;

	var day = value.substring(6, 8);
	if (day > getMaxDay(year, month) || day < "01")
		return false;

	return true;
}

/*
 * 用途:检查输入的起止日期是否正确,规则为两个日期的格式正确或都为空 且结束日期>=起始日期 输入: startDate:起始日期,字符串 endDate:
 * 结束日期,字符串 返回: 如果通过验证返回true,否则返回false
 * 
 */
function checkPeriod(startDate, endDate) {
	if (!checkDate(startDate)) {
		alert("起始日期不正确!");
		return false;
	} else if (!checkDate(endDate)) {
		alert("终止日期不正确!");
		return false;
	} else if (startDate > endDate) {
		alert("起始日期不能大于终止日期!");
		return false;
	}
	return true;
}

/*
 * 用途:检查证券代码是否正确 输入: secCode:证券代码 返回: 如果通过验证返回true,否则返回false
 * 
 */
function checkSecCode(secCode) {
	if (secCode.length != 6) {
		alert("证券代码长度应该为6位");
		return false;
	}

	if (!isNumber(secCode)) {
		alert("证券代码只能包含数字");

		return false;
	}
	return true;
}

/*******************************************************************************
 * function:cTrim(sInputString,iType) description:字符串去空格的函数
 * parameters:iType:1=去掉字符串左边的空格
 * 
 * 2=去掉字符串左边的空格 0=去掉字符串左边和右边的空格 return value:去掉空格的字符串
 ******************************************************************************/
function cTrim(sInputString, iType) {
	var sTmpStr = ' ';
	var i = -1;

	if (iType == 0 || iType == 1) {
		while (sTmpStr == ' ') {
			++i;
			sTmpStr = sInputString.substr(i, 1);
		}
		sInputString = sInputString.substring(i);
	}

	if (iType == 0 || iType == 2) {
		sTmpStr = ' ';
		i = sInputString.length;
		while (sTmpStr == ' ') {
			--i;
			sTmpStr = sInputString.substr(i, 1);
		}
		sInputString = sInputString.substring(0, i + 1);
	}
	return sInputString;
}
/*
 * 用途:验证身份证
 * 
 */
function isChinaIDCard(StrNo) {

	var area = {
		110 : "北京",
		120 : "天津",
		130 : "河北",
		140 : "山西",
		150 : "内蒙古",
		210 : "辽宁",
		220 : "吉林",
		221 : "长春市",
		230 : "黑龙江",
		231 : "哈尔滨市",
		310 : "上海",
		320 : "江苏",
		321 : "南京市",
		330 : "浙江",
		340 : "安徽",
		350 : "福建",
		351 : "厦门市",
		360 : "江西",
		370 : "山东",
		371 : "青岛市",
		410 : "河南",
		420 : "湖北",
		421 : "武汉市",
		430 : "湖南",
		440 : "广东",
		441 : "广州市",
		442 : "深圳市",
		450 : "广西",
		460 : "海南",
		511 : "重庆",
		510 : "四川",
		512 : "成都市",
		520 : "贵州",
		532 : "云南省墨江",
		522 : "贵州地市1",
		530 : "云南",
		540 : "西藏",
		610 : "陕西",
		611 : "西安市",
		620 : "甘肃",
		630 : "青海",
		640 : "宁夏",
		650 : "新疆",
		710 : "台湾",
		720 : "香港",
		730 : "澳门",
		431 : "新增加1",
		652 : "新增加2",
		513 : "新增加3",
		142 : "新增加5",
		341 : "新增加6",
		331 : "新增加7",
		412 : "新增加8",
		222 : "新增加9",
		131 : "新增加10",
		342 : "新增加11",
		612 : "新增加12",
		500 : "新增加13",
		211 : "新增加15",
		445 : "新增加17",
		332 : "新增加18",
		342 : "新增加19",
		152 : "新增加20",
		211 : "新增加21",
		362 : "新增加22",
		411 : "新增加23",
		413 : "新增加25",
		654 : "新增加26",
		452 : "新增加27",
		339 : "新增加28",
		352 : "新增加29",
		152 : "新增加30",
		622 : "新增加30",
		422 : "新增加30",
		372 : "新增加30",
		533 : "新增加31",
		232 : "新增加32",
		500 : "新增加33",
		330 : "新增加35",
		239 : "新增加36",
		654 : "新增加37",
		422 : "新增加38",
		339 : "新增加39",
		433 : "新增加40",
		659 : "新增加41",
		632 : "新增加42",
		429 : "新增加43",
		432 : "新增加45",
		133 : "新增加46",
		642 : "新增加46",
		132 : "新增加46",
		653 : "新增加46",
		542 : "新增加47"
	};
	var idcard_array = new Array();
	idcard_array = StrNo.split("");
	if (area[parseInt(StrNo.substr(0, 3))] == null) {
		return false;
	}

	if (StrNo.length == 18) {

		var a, b, c
		if (!isInteger(StrNo.substr(0, 17))) {
			return false
		}
		a = parseInt(StrNo.substr(0, 1)) * 7 + parseInt(StrNo.substr(1, 1)) * 9
				+ parseInt(StrNo.substr(2, 1)) * 10;
		a = a + parseInt(StrNo.substr(3, 1)) * 5 + parseInt(StrNo.substr(4, 1))
				* 8 + parseInt(StrNo.substr(5, 1)) * 4;
		a = a + parseInt(StrNo.substr(6, 1)) * 2 + parseInt(StrNo.substr(7, 1))
				* 1 + parseInt(StrNo.substr(8, 1)) * 6;
		a = a + parseInt(StrNo.substr(9, 1)) * 3
				+ parseInt(StrNo.substr(10, 1)) * 7
				+ parseInt(StrNo.substr(11, 1)) * 9;
		a = a + parseInt(StrNo.substr(12, 1)) * 10
				+ parseInt(StrNo.substr(13, 1)) * 5
				+ parseInt(StrNo.substr(14, 1)) * 8;
		a = a + parseInt(StrNo.substr(15, 1)) * 4
				+ parseInt(StrNo.substr(16, 1)) * 2;
		b = a % 11;

		if (b == 2) // 最后一位为校验位
		{
			c = StrNo.substr(17, 1).toUpperCase(); // 转为大写X
		} else {
			c = parseInt(StrNo.substr(17, 1));
		}

		switch (b) {
		case 0:
			if (c != 1) {
				// alert("身份证好号码校验位错:最后一位应该为:1");
				return false;
			}
			break;
		case 1:
			if (c != 0) {
				// alert("身份证好号码校验位错:最后一位应该为:0");
				return false;
			}
			break;
		case 2:
			if (c != "X") {
				// alert("身份证好号码校验位错:最后一位应该为:X");
				return false;
			}
			break;
		case 3:
			if (c != 9) {// alert("身份证好号码校验位错:最后一位应该为:9");
				return false;
			}
			break;
		case 4:
			if (c != 8) {// alert("身份证好号码校验位错:最后一位应该为:8");
				return false;
			}
			break;
		case 5:
			if (c != 7) {// alert("身份证好号码校验位错:最后一位应该为:7");
				return false;
			}
			break;
		case 6:
			if (c != 6) {// alert("身份证好号码校验位错:最后一位应该为:6");
				return false;
			}
			break;
		case 7:
			if (c != 5) {// alert("身份证好号码校验位错:最后一位应该为:5");
				return false;
			}
			break;
		case 8:
			if (c != 4) {// alert("身份证好号码校验位错:最后一位应该为:4");
				return false;
			}
			break;
		case 9:
			if (c != 3) {// alert("身份证好号码校验位错:最后一位应该为:3");
				return false;
			}
			break;
		case 10:
			if (c != 2) {// alert("身份证好号码校验位错:最后一位应该为:2");
				return false
			}
		}
	} else // 15位身份证号
	{
		if (!isInteger(StrNo)) {// alert("身份证号码错误,前15位不能含有英文字母!");
			return false
		}
	}

	switch (StrNo.length) {
	case 15:
		if (isValidDate("19" + StrNo.substr(6, 2), StrNo.substr(8, 2), StrNo
				.substr(10, 2))) {
			return true;
		} else {
			return false;
		}
	case 18:
		if (isValidDate(StrNo.substr(6, 4), StrNo.substr(10, 2), StrNo.substr(
				12, 2))) {
			return true;
		} else {
			return false;
		}
	}
	return false
}

function isValidDate(iY, iM, iD) {
	var a = new Date(iY, iM - 1, iD);
	var y = a.getFullYear();
	var m = a.getMonth() + 1;
	var d = a.getDate();
	if (y != iY || m != iM || d != iD) {
		return false;
	}
	return true
}

function isInteger(str) {
	if (/[^\d]+$/.test(str)) {
		return false;
	}
	return true;
}
function isDigit(inStr) {
	var Digits = "0123456789";
	var temp;

	if (isEmpty(inStr) == 1)
		return 1;

	for ( var i = 0; i < inStr.length; i++) {
		temp = inStr.substring(i, i + 1);
		if (Digits.indexOf(temp) == -1) {
			return 0;
		}
	}
	return 1;
}
function isEmpty(inStr) {

	for ( var i = 0; i < inStr.length; i++)
		if (inStr.substring(i, i + 1) != " ")
			return 0;
	return 1;
}
function isLengthRight(length, inStr) {
	var str = Trim(inStr);
	var i = 0;
	for ( var dd = 0; dd < str.length; dd++) {
		if (str.charCodeAt(dd) > 255) {
			i = i + 2;
		} else {
			i = i + 1;
		}
	}

	// 比较长度
	var j = parseInt(length);
	if (i == j) {
		return 1;
	} else {
		return i > j ? -1 : 0;
	}
}
function isDate(inStr) {
	if (inStr == "")
		return 1;
	var Year;
	var Month;
	var Day;
	strDate = Trim(inStr);
	if (strDate.length != 8) {
		return 0;
	}
	Year = strDate.substring(0, 4);
	Month = strDate.substring(4, 6);
	Day = strDate.substring(6, 8);
	if ((isDigit(Year) != 1) || (isDigit(Month) != 1) || (isDigit(Day) != 1)
			|| (Year < "1900") || (Year > "2100")) {
		return 0;
	}
	switch (Month) {
	case '01':
	case '03':
	case '05':
	case '07':
	case '08':
	case '10':
	case '12':
		if (Day < '01' || Day > '31')
			return 0;
		break;
	case '04':
	case '06':
	case '09':
	case '11':
		if (Day < '01' || Day > '30')
			return 0;
		break;
	case '02':
		if ((parseInt(Year) % 4 == 0 && parseInt(Year) % 100 != 0)
				|| parseInt(Year) % 400 == 0) {
			if (Day < '01' || Day > '29')
				return 0;
		} else {
			if (Day < '01' || Day > '28')
				return 0;
		}
		break;
	default:
		return 0;
	}
	return 1;
}
function Trim(inStr) {
	if (isEmpty(inStr) == 1)
		return "";
	var temp = inStr;
	while (temp.indexOf(' ') == 0)
		temp = temp.substring(1, temp.length);
	while (temp.lastIndexOf(' ') == temp.length - 1)
		temp = temp.substring(0, temp.length - 1);
	return temp;
}

/** 身份证验证验证结束* */
posted @ 2015-05-08 21:22  海上村民  阅读(280)  评论(0)    收藏  举报