function isDate(str){ 
var reg = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/
if (reg.test(str)){return true;}else{return false;}
}
function checkPhone( strPhone ) 
{ 
    if(strPhone.indexOf("-")!=-1)
    {
        var allNum = strPhone.split("-");
        areaNum = allNum[0];
        phoneNum = allNum[1];
        if(isNumber(areaNum))
        {
           if(areaNum.length>4)
           {
               return false;
           }
        }
        else
        {
            return false;
        }
        if(isNumber(phoneNum))
        {
           if(phoneNum.length>10)
           {
               return false;
           }
        }
        else
        {
            return false;
        }
    }
    return true;
}

function isNumber( s )
{ 
	var regu = "^[0-9]+$"; 
	var re = new RegExp(regu); 
	if (s.search(re) != -1) { return true;} else { return false;} 
} 

function checkMobile( s )
{ 
	var regu =/(^(13|15|18)(\d){9}$)|(^189\d{8}$)/ig; 
	var re = new RegExp(regu); 
	if (re.test(s)) 
	{ 
		return true; 
	}
	else
	{ 
		return false; 
	} 
} 

function isEmail(strEmail) 
{ 
	//var emailReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/; 
	var emailReg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/; 
	if( emailReg.test(strEmail) ){ return true; }else{ return false; } 
}
function   isIDCardNum   (str)    
{   //身份证正则表达式(15位)    
     //isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;  
    //身份证正则表达式(18位)  
    //isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;  
    //验证身份证，返回结果    
    //return   (isIDCard1.test(str)||isIDCard2.test(str));
	if(isNumber(str))
	{
	    if(str.length!=15 && str.length!=18)
	    {
	        return false;
	    }
	    else
	    {
	        return true;
	    }
	}
	else
	{
	    return false;
	}      
}
function isURL(str_url)
{
	var strRegex = "^((https|http|ftp|rtsp|mms)://)"
	+ "(([0-9a-z_!~*’().&=+$%-]+: )?[0-9a-z_!~*’().&=+$%-]+@)?" //ftp的user@
	+ "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
	+ "|" // 允许IP和DOMAIN（域名）
	+ "([0-9a-z_!~*’()-]+\.)*" // 域名- www.
	+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名
	+ "[a-z]{2,6})" // first level domain- .com or .museum
	+ "(:[0-9]{1,4})?" // 端口- :80
	var re=new RegExp(strRegex);
	if (re.test(str_url))
	{
		return (true);
	}else
	{
		return (false);
	}
}
function isCompanyCode(s)
{
	if(s.length!=10)
	{
		return false;
	}
	var regu =/^[A-Za-z0-9]{8}-[A-Za-z0-9]{1}/; 
	var re = new RegExp(regu); 
	if (re.test(s)) 
	{ 
		return true; 
	}
	else
	{ 
		return false; 
	} 
}
function isIdCardNo(idcard)
{   
 //身份证正则表达式(15位)    
var   Errors=new   Array(  
"验证通过!",  
"身份证号码位数不对!",  
"身份证号码出生日期超出范围或含有非法字符!",  
"身份证号码校验错误!",  
"身份证地区非法!"  
);  
var   area={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:"xingjiang",71:"台湾",81:"香港",82:"澳门",91:"国外"}    
   
var   idcard,Y,JYM;  
var   S,M;  
var   idcard_array   =   new   Array();  
idcard_array   =   idcard.split("");  
//地区检验  
if(area[parseInt(idcard.substr(0,2))]==null)   return false;//Errors[4];  
//身份号码位数及格式检验  
switch(idcard.length){  
case   15:  
if (   (parseInt(idcard.substr(6,2))+1900)   %   4   ==   0   ||   ((parseInt(idcard.substr(6,2))+1900)   %   100   ==   0   &&   (parseInt(idcard.substr(6,2))+1900)   %   4   ==   0   )){  
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;
//测试出生日期的合法性  
}   else   {  
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;  
//测试出生日期的合法性  
}  
if(ereg.test(idcard)) return true;//Errors[0];  
else   return false;//Errors[2];  
break;  
case   18:  
//18位身份号码检测  
//出生日期的合法性检查    
//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))  
//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))  
if   (   parseInt(idcard.substr(6,4))   %   4   ==   0   ||   (parseInt(idcard.substr(6,4))   %   100   ==   0   &&   parseInt(idcard.substr(6,4))%4   ==   0   )){  
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;
//闰年出生日期的合法性正则表达式  
}   else   {  
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;
//平年出生日期的合法性正则表达式  
}  
if(ereg.test(idcard)){//测试出生日期的合法性  
//计算校验位  
S   =   (parseInt(idcard_array[0])   +   parseInt(idcard_array[10]))   *   7  
+   (parseInt(idcard_array[1])   +   parseInt(idcard_array[11]))   *   9  
+   (parseInt(idcard_array[2])   +   parseInt(idcard_array[12]))   *   10  
+   (parseInt(idcard_array[3])   +   parseInt(idcard_array[13]))   *   5  
+   (parseInt(idcard_array[4])   +   parseInt(idcard_array[14]))   *   8  
+   (parseInt(idcard_array[5])   +   parseInt(idcard_array[15]))   *   4  
+   (parseInt(idcard_array[6])   +   parseInt(idcard_array[16]))   *   2  
+   parseInt(idcard_array[7])   *   1    
+   parseInt(idcard_array[8])   *   6  
+   parseInt(idcard_array[9])   *   3   ;  
Y   =   S   %   11;  
M   =   "F";  
JYM   =   "10X98765432";  
M   =   JYM.substr(Y,1);//判断校验位  
if(M   ==   idcard_array[17])   return   true;//Errors[0];   //检测ID的校验位  
else   return   false;//Errors[3];  
}  
else   return   false;//Errors[2];  
break;  
default:  
return   false;//Errors[1];  
break;  
} 
}
