﻿// JScript 文件

//编码 encodeURI() 和解码decodeURI()  
 

//是否是网址
function IsURL(inputStr)
{
    if(!/^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?$/.test(inputStr))
    {
        return false;
    }
    return true;
}
//是否是座机和手机号码
function IsPhoneNum(inputStr)
{
    if(!/(^(\d{2,4}[-_－—]+)?\d{3,8}([-_－—]+\d{3,8})?([-_－—]+\d{1,7})?$)|(^0?1[35]\d{9}$)/.test(inputStr))
    {
        return false;
    }
    return true;
}

//是否是座机电话号码
function IsTelNum(inputStr)
{
    if(!/^(\d{2,4}[-_－—]+)?\d{3,8}([-_－—]+\d{3,8})?([-_－—]+\d{1,7})?$/.test(inputStr))
    {
        return false;
    }
    return true;
}

//是否是手机号码
function checkIsMobileNum(inputStr)
{
    if(!/^0?1[35]\d{9}$/.test(inputStr))
    {
        return false;
    }
    return true;
}

//检查Email地址是否符合格式
function checkEmailFromat(email)
{
    if(email.length>=50 || !/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(email))
    {
        return false;
    }
    return true;
}
//检查开头是否是“字母和下划线”
function checkIsStartRight(inputStr)
{
    if(!/^[_a-zA-Z]{1,}/.test(inputStr))
    {
        return false;
    }
    return true;
}
//检查是否都是数字
function checkIsNum(inputStr)
{
    if(!/^[0-9]+$/.test(inputStr))
    {
        return false;
    }
    return true;
}
//是否是姓名
function checkIsXingMing(inputStr)
{
    if(!/^[\u4e00-\u9fa5]{2,8}$/.test(inputStr))
    {
        return false;
    }
    return true;
}
//检查是否都是字符（不包括数字）
function checkIsString(inputStr)
{
    if(!/^[a-zA-Z\u4e00-\u9fa5]+$/.test(inputStr))
    {
        return false;
    }
    return true;
}
//检查是否都是字母（不包括数字）
function checkIsChar(inputStr)
{
    if(!/^[a-zA-Z]+$/.test(inputStr))
    {
        return false;
    }
    return true;
}
//检查是否含有字母
function checkIsHasChar(inputStr)
{
    if(!/[a-zA-Z]{1,}/.test(inputStr))
    {
        return false;
    }
    return true;
}
//检查是否含有数字
function checkIsHasNum(inputStr)
{
    if(!/[0-9]{1,}/.test(inputStr))
    {
        return false;
    }
    return true;
}
//检查是否是字符和数字(有汉字)
function checkIsStringNum(inputStr)
{
    if(!/^[a-zA-Z0-9\u4e00-\u9fa5]+$/.test(inputStr))
    {
        return false;
    }
    return true;
}
//检查是否是字母和数字
function checkIsCharNum(inputStr)
{
    if(!/^[a-zA-Z0-9]+$/.test(inputStr))
    {
        return false;
    }
    return true;
}
//是否是空
function IsNullEmplty(inputStr)
{
    if(!inputStr)
        return true;
    if(inputStr.length<=0)
        return true;
}
//检查是否有空字符
function checkIsHasEmpty(inputStr)
{
    if(!/[\s]+/.test(inputStr))
    {
        return false;
    }
     return true;
}
//检查是否不全为空
function checkIsNotEmpty(inputStr)
{
    if(!IsNullEmplty(inputStr))
    {
        if(!/^[\s]*([^\s]+[\s]*)+$/.test(inputStr))
            return false;
        else
            return true;
    }
    else
        return false;
}
//是否是身份证号码
function isIdCardNo(num)
{
    if(num && num.length>0 && !checkIsHasEmpty(num))
    {
        return changeIdCardNo(num);
    }
    else
    {//有空字符或不存在
        return false;
    }
}
//身份证验证
function changeIdCardNo(num)
{
    num = num.toUpperCase();
	if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num)))
	{
		return false;
	}
	
	var len, re;
	len = num.length;
	if (len == 15)
	{
		re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
		var arrSplit = num.match(re);
		//检查生日日期是否正确
		var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
		var bGoodDay;
		bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
		if (!bGoodDay)
		{
			return false;
		}
		else
		{
			var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
			var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
			var nTemp = 0;
			var i;
			num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
			for(i = 0; i < 17; i ++)
			{
				nTemp += num.substr(i, 1) * arrInt[i];
			}
			num += arrCh[nTemp % 11];
			//return num;
		}
	}
	else if (len == 18)
	{
		re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
		var arrSplit = num.match(re);
		//检查生日日期是否正确
		var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
		var bGoodDay;
		bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
		if (!bGoodDay)
		{
			return false;
		}
		else
		{
			//检验18位身份证的校验码是否正确。
			//校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
			var valnum;
			var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
			var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
			var nTemp = 0, i;
			for(i = 0; i < 17; i ++)
			{
				nTemp += num.substr(i, 1) * arrInt[i];
			}
			valnum = arrCh[nTemp % 11];
			if (valnum != num.substr(17, 1))
			{
				return false;
			}
		}
	}
	var sBirthday=num.substr(6,4)+"-"+Number(num.substr(10,2))+"-"+Number(num.substr(12,2));
	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:"国外"}
	if(aCity[parseInt(num.substr(0,2))]==null)
	{
		return false;
	}
	if(Number(num.substr(6,2))<19)
	{
		return false;
	}
	return true;    
}
