JavaScript常用记录(2)

本文介绍了用于验证数字、字符、邮箱、手机号等不同类型的输入字段的JavaScript函数,以及身份证、时间、日期等验证方法,并提供了针对登录名、用户姓名、密码等表单元素的验证逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

</pre><pre name="code" class="html">/****************************/
/*********1.数字的验证*******/
/***************************/


/**
 * 检查输入的一串字符是否全部是数字
 */
function checkNum(str) {
	return str.match(/\D/) == null;
}


/**
 * 检查输入的一串字符是否为小数
 */
function checkDecimal(str) {
	if (str.match(/^-?\d+(\.\d+)?$/g) == null) {
		return false;
	} else {
		return true;
	}
}


/**
 * 检查输入的一串字符是否为整型数据
 */
function checkInteger(str) {
	if (str.match(/^[-+]?\d*$/) == null) {
		return false;
	} else {
		return true;
	}
}


/****************************/
/*********2.字符的验证*******/
/***************************/


/**
 * 去掉字符串头尾空格
 */
function trim(str) {
	return str.replace(/(^\s*)|(\s*$)/g, "");
}


/**
 * 检查输入的一串字符是否是字符
 */
function checkStr(str) {
	if (/[^\x00-\xff]/g.test(str)) {
		return false;
	} else {
		return true;
	}
}


/**
 * 检查输入的一串字符是否包含汉字
 */
function checkChinese(str) {
	if (escape(str).indexOf("%u") != -1) {
		return true;
	} else {
		return false;
	}
}


/**
 * 检查输入的邮箱格式是否正确
 */
function checkEmail(str) {
	if (str
			.match(/[A-Za-z0-9_-]+[@](\S*)(net|com|cn|org|cc|tv|[0-9]{1,3})(\S*)/g) == null) {
		return false;
	} else {
		return true;
	}
}


/**
 * 检查输入的手机号码格式是否正确
 */
function checkMobilePhone(str) {
	if (str.match(/^(?:13\d|15[89])-?\d{5}(\d{3}|\*{3})$/) == null) {
		return false;
	} else {
		return true;
	}
}


/**
 * 检查输入的固定电话号码是否正确
 */
function checkTelephone(str) {
	if (str.match(/^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/) == null) {
		return false;
	} else {
		return true;
	}
}


/**
 * 检查QQ的格式是否正确
 */
function checkQQ(str) {
	if (str.match(/^\d{5,10}$/) == null) {
		return false;
	} else {
		return true;
	}
}


/**
 * 检查输入的IP地址是否正确
 */
function checkIP(str) {
	var arg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
	if (str.match(arg) == null) {
		return false;
	} else {
		return true;
	}
}


/**
 * 检查输入的URL地址是否正确
 */
function checkURL(str) {
	if (str.match(/(http[s]?|ftp):\/\/[^\/\.]+?\..+\w$/i) == null) {
		return false
	} else {
		return true;
	}
}


/**
 * 检查输入的字符是否具有特殊字符
 */
function checkQuote(str) {
	var items = new Array("~", "`", "!", "@", "#", "$", "%", "^", "&", "*",
			"{", "}", "[", "]", "(", ")");
	items.push(":", ";", "'", "|", "\\", "<", ">", "?", "/", "<<", ">>", "||",
			"//");
	items.push("admin", "administrators", "administrator", "管理员", "系统管理员");
	items.push("select", "delete", "update", "insert", "create", "drop",
			"alter", "trancate");
	str = str.toLowerCase();
	for (var i = 0; i < items.length; i++) {
		if (str.indexOf(items[i]) >= 0) {
			return true;
		}
	}
	return false;
}


/*****************************/
/*******身份证号码的验证******/
/***************************/


/**
 * 检查输入的一串字符是否为身份证的验证的判断。
 */
function checkCard(num) {
	if (isNaN(num)) {
		alert("输入的不是数字!");
		return false;
	}
	var len = num.length, re;
	if (len == 15)
		re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
	else if (len == 18)
		re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
	else {
		alert("输入的数字位数不对!");
		return false;
	}
	var a = num.match(re);
	if (a != null) {
		if (len == 15) {
			var D = new Date("19" + a[3] + "/" + a[4] + "/" + a[5]);
			var B = D.getYear() == a[3] && (D.getMonth() + 1) == a[4]
					&& D.getDate() == a[5];
		} else {
			var D = new Date(a[3] + "/" + a[4] + "/" + a[5]);
			var B = D.getFullYear() == a[3] && (D.getMonth() + 1) == a[4]
					&& D.getDate() == a[5];
		}
		if (!B) {
			alert("输入的身份证号 " + a[0] + " 里出生日期不对!");
			return false;
		}
	}
	return true;
}


/**
 * 通过身份证判断是男是女
 * 
 * @param idCard
 *            15/18位身份证号码
 * @return true-女、false-男
 */
function checkMaleOrFemal(str) {
	str = trim(str.replace(/ /g, ""));
	// 对身份证号码做处理。包括字符间有空格。
	if (str.length == 15) {
		if (str.substring(14, 15) % 2 == 0) {
			return true;
		} else {
			return false;
		}
	} else if (str.length == 18) {
		if (str.substring(14, 17) % 2 == 0) {
			return true;
		} else {
			return false;
		}
	} else {
		return null;
	}
}


/****************************/
/*********时间的验证*********/
/***************************/


/**
 * 检查输入的一串字符是否为短时间,形如 (13:04:06)
 */
function checkTime(str) {
	var a = str.match(/^(\d{1,2})(?(\d{1,2})\2(\d{1,2})$/);
	if (a == null) {
		alert('输入的参数不是时间格式');
		return false;
	}
	if (a[1] > 24 || a[3] > 60 || a[4] > 60) {
		alert("时间格式不对");
		return false
	}
	return true;
}


/**
 * 检查输入的一串字符是否为短日期,形如 (2003-12-05)
 */
function checkDate(str) {
	var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
	if (r == null)
		return false;
	var d = new Date(r[1], r[3] - 1, r[4]);
	return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d
			.getDate() == r[4]);
}


/**
 * 检查输入的一串字符是否为长时间,形如 (2003-12-05 13:04:06)
 */
function checkFullTime(str) {
	var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2})\d{1,2})\d{1,2})$/;
	var r = str.match(reg);
	if (r == null)
		return false;
	var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]);
	return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3]
			&& d.getDate() == r[4] && d.getHours() == r[5]
			&& d.getMinutes() == r[6] && d.getSeconds() == r[7]);
}




/****************************/
/*********表单的验证*********/
/***************************/


/**
 * 校验登录名:只能输入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 = /^[^`~!@#$%^&*()+-=|\\\[\]\{\}:;\'\,.<>/? 0-9]{2,19}$/;
	if (!patrn.exec(s))
		return false
	return true
}


/**
 * 校验密码:只能输入6-15个字母、数字。
 */
function isPasswd(s) {
	var patrn = /^[a-zA-Z0-9]{6,15}$/;
	if (!patrn.exec(s))
		return false
	return true
}


/**
 * 检验体重。
 */
function isAvoirdupois(s) {
	var patrn = /^[1-9]{1}[0-9]{0,2}$/;
	var patrn2 = /^[1-9]{1}$/;
	var intPart = s.indexOf('.');
	var decPart = s.lastIndexOf('.');
	if (intPart == -1 && patrn.exec(s) && eval(s) >= 2 && eval(s) <= 200)
		return true
	if (intPart != decPart || intPart == 0 || intPart + 2 != s.length)
		return false
	if (!patrn.exec(s.substring(0, intPart))
			|| !patrn2.exec(s.substring(decPart + 1)))
		return false
	if (eval(s) < 2 || eval(s) > 200)
		return false
	return true
}


/**
 * 校验邮政编码。
 */
function isPostalCode(s) {
	var patrn = /^[1-9]{1}(\d){5}$/;
	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 isPage(s) {
	var patrn = /^[1-9]{1}[0-9]{0,2}$/;
	if (!patrn.exec(s))
		return false
	return true
}


/**
 * 表单输入值错误提示。
 */
function vErr(o, s) {
	alert(s);
	if (o)
		o.focus();
	return false;
}


/**
 * 表单的值不能为空。
 */
function isNull(elem) {
	if (elem.replace(/(^\s+|\s$)/g, "") == "") {
		return false;
	} else {
		return true;
	}
}


/**
 * 不能超过imax字符。
 */
function imax(elem) {
	if (elem.length > imax) {
		return false;
	} else {
		return true;
	}
}


/**
 * 不能少于imix字符。
 */
function imix(elem) {
	if (elem.lengthreturn) {
		false;
	} else {
		return true;
	}
}


/**
 * 输入为中文判断。
 */
function isChinese(elem) {
	var pattern = /[^\x00-\xff]/g;
	if (pattern.test(elem)) {
		// 包含中文
		return false;
	} else {
		// 不包含中文
		return true;
	}
}


/**
 * 复选框的全选,全不选。
 */
function checkAll(str) {
	var a = document.getElementsByName(str);
	var n = a.length;
	for (var i = 0; i < n; i++){
		a[i].checked = window.event.srcElement.checked;
	}
}


/**
 * 复选框的单选。
 */
function checkItem(str) {
	var e = window.event.srcElement;
	var all = eval("document.all." + str);
	if (e.checked) {
		var a = document.getElementsByName(e.name);
		all.checked = true;
		for (var i = 0; i < a.length; i++) {
			if (!a[i].checked) {
				all.checked = false;
				break;
			}
		}
	} else{
		all.checked = false;
	}
}  


/**
 * 判断单选。
 */
function chkRadio(o) {
	for (i = 0; i < o.length; i++) {
		if (o[i].checked)
			return true;
	}
	return false;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值