JavaScript数据类型判断

/**一。验证类*/
//对象是否 存在
function isObj(str) {
if (str == null || typeof (str) == ‘undefined’)
return false;
return true;
}
//去除字符串中的空格
function strTrim(str) {
if (!isObj(str))
return ‘undefined’;
str = str.replace(/^\s+|\s+$/g, ‘’);
return str;
}
/**1数字验 证**/
//1。1整数
//整数或者为空
function isIntOrNull(str) {
if (!isObj(str))//判断对象是否存在
return ‘undefined’;
return isNull(str) || isInt(str);
}
//必需是整数
function isInt(str) {
var reg = /^(-|+)?\d+$/;
return reg.test(str);
}
//1.2 小数
//小数或者为空
function isFloatOrNull(str) {
if (!isObj(str))//判 断对象是否存在
return ‘undefined’;
if (isInt(str))
return true;
return isNull(str) || isFloat(str);
}
//必需是小数
function isFloat(str) {
if (isInt(str))
return true;
var reg = /^(-|+)?\d+.\d$/;
return reg.test(str);
}
//1.3 数字大小判断
//数i不能大于数y
function iMinY(i, y) {
if (!isObj(i) || !isObj(y))// 判断对象是否存在
return ‘undefined’;
if (!(isFloat(i) && isFloat(y)))
return ‘比较的必须是数字类型’
if (i <= y)
return true;
return false;
}
// 数i不能小于数y
function iMaxY(i, y) {
if (!isObj(i) || !isObj(y))//判断对象是 否存在
return ‘undefined’;
if (!(isFloat(i) && isFloat(y)))
return ‘比较的必须是数字类型’
if (i >= y)
return true;
return false;
}
/**1 数字验证**/
/**2时间类验证**/
//2.1 短时间,形如 (13:04:06)
function shortTimeCheck(str) {
if (!isObj(str))// 判断对象是否存在
return ‘undefined’;
var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
//var a = str.match(/^\d{1,2}:\d{1,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;
}
//2.2 短日期,形如 (2003-12-05)
function shorDateCheck(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]);
}
//2.3 长时间,形如 (2003-12-05 13:04:06)
function longDateCheck(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]);
}
//2.4 只有年和月。形如(2003-05,或者2003-5)
//2.5 只有小时和分钟,形如(12:03)
/**2时间类验证**/
/**3表单类验证**/
//3.1 所有的表单的值都不能为空,对象内容是否为空
function isNull(str) {
if (!isObj(str))
return ‘undefined’;
//alert(“
“+str+”“);
str = strTrim(str);
//alert(“
“+str+”“);
if (str.length > 0)
return false;
return true;
}
//3.2 多行文本框的值不能为空。
//3.3 多行文本框的值不能超过sMaxStrleng
function sMaxStrleng(str, len) {
if (!isObj(str))
return ‘undefined’;
str = strTrim(str);
if (str.length > len)
return false;
return true;
}
//3.4 多行文本框的值不能少于sMixStrleng
function sMixStrleng(str, len) {
if (!isObj(str))
return ‘undefined’;
str = strTrim(str);
if (str.length < len)
return false;
return true;
}
//3.5 判断单选框是否选择。
//3.6 判断复选框是否选择.
//3.7 复选框的全选,多选,全不选,反选
//3.8 文件上传过程中判断文件类型
function upLoadFileType(str) {
return str.match(/^(.
)(.)(.{1,8})$/)[3];
}
/**3表单类 验证**/
/**4字符类验证**/
//4.1 判断字符全部由a-Z或者是A-Z的字字母组成
function isLetter(str) {
if (!isObj(str))
return ‘undefined’;
str = strTrim(str);
var reg = /^[a-zA-Z]+$/g;
return reg.test(str)
}
//4.2 判断字符由字母和数字组成。
function isLetterOrNum(str) {
if (!isObj(str))
return ‘undefined’;
str = strTrim(str);
var reg = /^[0-9a-zA-Z]+$/g;
return reg.test(str)
}
//4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母
function isLegalityName(str) {
if (!isObj(str))
return ‘undefined’;
str = strTrim(str);
var reg = /^([a-zA-z]{1})([A-Za-z0-9.])$/g;
return reg.test(str)
}
// /^([a-zA-z_]{1})([\w]
)$/g.test(str)
//4.4 字符串替换函数.Replace();
/**4 字符类验证**/
/**5浏览器类**/
//5.1 判断浏览器的类型
function getIEType() {
return window.navigator.appName;
}
//5.2 判断ie的版本
function getIEVersion() {
return window.navigator.appVersion;
}
//5.3 判断客户端的分辨率
function getResolvingPower() {
return window.screen.height + ““ + window.screen.width;
}
/**5 浏览器类**/
/**6综合类**/
//6.1 email的判断。
function isMail(mail) {
return (new RegExp(/^\w+((-\w+)|(.\w+))
\@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+).[A-Za-z0-9]+$/).test(mail));
}
//6.2 手机号码的验证
function isCellPhoneNum(num) {
if (isNaN(num)) {
alert(“输入的不是数字!”);
return false;
}
var len = num.length;
if (len != 11) {
return false;
}
return true;
}
//6.3 身份证的验证
function isIdCardNo(num) {
if (isNaN(num)) {
alert(“输入的不是数字!”);
return false;
}
var len = num.length;
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;
}
//身份证严格验证
function IdCardNoCheck(sId) {
var aCity = { 11: “北京”, 12: “天津”, 13: “河北”, 14: “山西”, 15: “内蒙古”, 21: “辽宁”, 22: “吉林”, 23: “黑龙 江”, 31: “上海”, 32: “江苏”, 33: “浙江”, 34: “安徽”, 35: “福建”, 36: “江西”, 37: “山东”, 41: “河南”, 42: “湖 北”, 43: “湖南”, 44: “广东”, 45: “广西”, 46: “海南”, 50: “重庆”, 51: “四川”, 52: “贵州”, 53: “云南”, 54: “西 藏”, 61: “陕西”, 62: “甘肃”, 63: “青海”, 64: “宁夏”, 65: “新疆”, 71: “台湾”, 81: “香港”, 82: “澳门”, 91: “国 外” }
var iSum = 0
var info = “”
if (!/^\d{17}(\d|x)$/i.test(sId))
return false;
sId = sId.replace(/x$/i, “a”);
if (aCity[parseInt(sId.substr(0, 2))] == null) return “Error:非法地区”;
sBirthday = sId.substr(6, 4) + “-“ + Number(sId.substr(10, 2)) + “-“ + Number(sId.substr(12, 2));
var d = new Date(sBirthday.replace(/-/g, “/“))
if (sBirthday != (d.getFullYear() + “-“ + (d.getMonth() + 1) + “-“ + d.getDate())) return “Error:非法生日”;
for (var i = 17; i >= 0; i—) iSum += (Math.pow(2, i) % 11)
parseInt(sId.charAt(17 - i), 11)
if (iSum % 11 != 1) return “Error:非法证号”;
//aCity[parseInt(sId.substr(0,2))]+”,”+sBirthday+”,”+ (sId.substr(16,1)%2?”男”:”女”)
return true;
}
//6.4电话号码的验 证
function PhoneCheck(str) {
var reg = /(^[0-9]{3,4}-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^[0−9]3,4[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
alert(reg.test(str));
}
//6.5验证IP地址
function isip(s) {
var check = function (v) { try { return (v <= 255 && v >= 0) } catch (x) { return false } };
var re = s.split(“.”)
return (re.length == 4) ? (check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])) : false
}
/**6综合类**/
//回车键换为 tab
function enterToTab() {
if (event.srcElement.type != ‘button’ && event.srcElement.type != ‘textarea’
&& event.keyCode == 13) {
event.keyCode = 9;
}
}
//具有在输入非数字字符不回显的效果,即对非数字字符的输入不作反应。
function numbersonly(field, event) {
var key, keychar;
if (window.event) {
key = window.event.keyCode;
}
else if (event) {
key = event.which;
}
else {
return true;
}
keychar = String.fromCharCode(key);
if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27)) {
return true;
}
else if ((“0123456789.”).indexOf(keychar) > -1) {
window.status = “”;
return true;
}
else {
window.status = “Field excepts numbers only”;
return false;
}
}
//
function txtOnKeyPress() {
var code = String.fromCharCode(window.event.keyCode) + ‘’;
alert(code);
var temp = eval(“isInt(‘“ + code + “‘)”);
window.event.returnValue = temp;
}