js验证

来源:互联网 发布:自己制作音乐的软件 编辑:程序博客网 时间:2024/05/16 08:39
  (1)验证邮箱:exp=/^([a-zA-Z_-])+@([a-zA-Z_-])+(\.[a-zA-Z_-])+$/
    (2)身体证号:exp=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/
    (3)IP地址:exp=/^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/

    (4)MAC地址:exp=/^([A-F0-9]{2}([:-])?){5}[A-F0-9]{2}$/ 


1.验证帐号是否合法

  验证规则:字母、数字、下划线组成,字母开头,4-16位。

 

1
2
3
4
5
6
7
8
9
function checkUser(str){
    var re = /^[a-zA-z]\w{3,15}$/;
    if(re.test(str)){
        alert("正确");
    }else{
        alert("错误");
    }          
}
checkUser("q_11");//调用

 

2.验证手机号码

  验证规则:11位数字,以1开头。

 

1
2
3
4
5
6
7
8
9
function checkMobile(str){
    var re = /^1\d{10}/
    if(re.test(str)){
        alert("正确");
    }else{
        alert("错误");
    }
}
checkMobile(13900001111);//调用

 

3.验证电话号码

  验证规则:区号+号码,区号以0开头,3位或4位
                    号码由7位或8位数字组成
                    区号与号码之间可以无连接符,也可以“-”连接
                    如01012345678 010-12345678。

1
2
3
4
5
6
7
8
9
function checkPhone(str){
    var re = /^0\d{2,3}-?\d{7,8}$/;
    if(re.test(str)){
        alert("正确");
    }else{
        alert("错误");
    }
}
checkPhone("012312345678");//调用

 

4.验证邮箱

  验证规则:姑且把邮箱地址分成“第一部分@第二部分”这样
                    第一部分:由字母、数字、下划线、短线“-”、点号“.”组成,
                    第二部分:为一个域名,域名由字母、数字、短线“-”、域名后缀组成,
                                而域名后缀一般为.xxx或.xxx.xx,一区的域名后缀一般为2-4位,如cn,com,net,现在域名有的也会大于4位

 

1
2
3
4
5
6
7
8
9
function checkEmail(str){
    var re = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/
    if(re.test(str)){
        alert("正确");
    }else{
        alert("错误");
    }
}
checkEmail("s_test@test.cn");//调用

<script>
function checkIdcard(idcard){
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:"新疆",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 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 Errors[0];
else return 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 Errors[0]; //检测ID的校验位
else return Errors[3];
}
else return Errors[2];
break;
default:
return Errors[1];
break;
}
}
alert(checkIdcard("220183198808081610"))
</script> 


  <script>     
     /***************判断两个日期大小***************/
     function compareDay(a,b){//a , b 格式为 yyyy-MM-dd       
var a1 = a.split("-");       
var b1 = b.split("-");        
var d1 = new Date(a1[0],a1[1],a1[2]);       
var d2 = new Date(b1[0],b1[1],b1[2]);  
if (Date.parse(d1) - Date.parse(d2) > 0) {//a>b          
alert('开始日期大于结束日期,Error!');       
return -1;      
}       
if (Date.parse(d1) - Date.parse(d2) = 0) {//a=b          
alert('开始日期等于结束日期');       
return 0;
}       
if (Date.parse(d1) - Date.parse(d2) > 0) {//a<b          
alert('开始日期小于结束日期');       
return 1;

}    
/***************判断日期是否为标准格式 yyyy-MM-dd ***************/ 
function isDateString(sDate){      
var mp=/\d{4}-\d{2}-\d{2}/; 
var matchArray = sDate.match(mp);     
if (matchArray==null) return false;      
var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31];     
var iaDate = new Array(3);     
var year, month, day;             
iaDate = sDate.split("-");          
year = parseFloat(iaDate[0])      
month = parseFloat(iaDate[1])      
day=parseFloat(iaDate[2])       
if (year < 1900 || year > 2100) return false;       
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1]=29;       if (month < 1 || month > 12) return false;       
if (day < 1 || day > iaMonthDays[month - 1]) return false;      
return true;  
}   
     //使用方法   
if(!isDateString(date)){    
alert("日期格式不正确,正确日期格式为yyyy-mm-dd");   
return false;  
}    
     /***************判断两个日期是不是在同一个月***************/ 
function check(beginDate,endDate){   
dt1 = new Date(beginDate.replace(/-/g,"/"));     
dt2 = new Date(endDate.replace(/-/g,"/"));   
if(dt1.getYear()==dt2.getYear()){      
alert('年份相同');       
if(dt1.getMonth()==dt2.getMonth()){        
alert('月份相同');       
}else{        
alert('月份不同');      
}     
}else{       
alert('年份不同'); 
}
}
  </script>