js验证、手机、固话、邮箱、身份证、网址、日期等
Verification.js文件
/*
* 手机号码格式
* 只允许以13、15、18开头的号码
* 如:13012345678、15929224344、18201234676
*/
var regMobile=/^[|||][-]\d{,}$/;
/*
* 固定电话号码格式
* 因为固定电话格式比较复杂,情况比较多,主要验证了以下类型
* 如:010-12345678、0912-1234567、(010)-12345678、(0912)1234567、(010)12345678、(0912)-1234567、01012345678、09121234567
*/
var regPhone=/^(^\d{}-?\d{}$)|(^\d{}-?\d{}$)|(^\d2-?\d{}$)|(^\d3-?\d{}$)$/;
/*
* Email邮箱
* 如:zhangsan@163.com、li-si@236.net、wan_gwu999@SEED.NET.TW
*/
var regEmail=/^([a-zA-Z0-]+[_|\-|\.]?)*[a-zA-Z0-]+@([a-zA-Z0-]+[_|\-|\.]?)*[a-zA-Z0-]+(\.[a-zA-Z]{,})+$/;
/*
* 身份证15位编码规则:dddddd yymmdd xx p
* dddddd:6位地区编码
* yymmdd: 出生年(两位年)月日,如:910215
* xx: 顺序编码,系统产生,无法确定
* p: 性别,奇数为男,偶数为女
*
* 身份证18位编码规则:dddddd yyyymmdd xxx y
* dddddd:6位地区编码
* yyyymmdd: 出生年(四位年)月日,如:19910215
* xxx:顺序编码,系统产生,无法确定,奇数为男,偶数为女
* y: 校验码,该位数值可通过前17位计算获得
*
* 前17位号码加权因子为 Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]
* 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]
* 如果验证码恰好是10,为了保证身份证是十八位,那么第十八位将用X来代替
* 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )
* i为身份证号码1...17 位; Y_P为校验码Y所在校验码数组位置
*/
function validateIdCard(idCard){
//15位和18位身份证号码的正则表达式
var regIdCard=/^(^[-]\d{}((\d)|([-]))(([||]\d)|[-])\d{}$)|(^[-]\d{}[-]\d{}((\d)|([-]))(([||]\d)|[-])((\d{})|\d{}[Xx])$)$/;
//如果通过该验证,说明身份证格式正确,但准确性还需计算
if(regIdCard.test(idCard)){
if(idCard.length==){
var idCardWi=new Array( , , , , , , , , , , , , , , , , ); //将前17位加权因子保存在数组里
var idCardY=new Array( , , , , , , , , , , ); //这是除以11后,可能产生的11位余数、验证码,也保存成数组
var idCardWiSum=; //用来保存前17位各自乖以加权因子后的总和
for(var i=;i<;i++){
idCardWiSum+=idCard.substring(i,i+)*idCardWi[i];
}
var idCardMod=idCardWiSum%;//计算出校验码所在数组的位置
var idCardLast=idCard.substring();//得到最后一位身份证号码
//如果等于2,则说明校验码是10,身份证号码最后一位应该是X
if(idCardMod==){
if(idCardLast=="X"||idCardLast=="x"){
return true;
}else{
alert("身份证号码错误!");
}
}else{
//用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
if(idCardLast==idCardY[idCardMod]){
return true;
}else{
alert("身份证号码错误!");
}
}
}
}else{
alert("身份证格式不正确!");
}
}
/*
* 只能为正整数
*/
var regNum=/^\d+$/;
/*
* 邮政编码
*/
var regPostCode=/^\d{}$/;
/*
* 用户名
* 只能是字母数字下划线,并且以字母开头(5-16位)
*/
var regUserName=/^[a-zA-Z]\w{,}$/;
/*
* IP地址
* 如:192.168.1.102
*/
var regIP=/^((([-]\d?)|(\d{})|([-]\d)|([-]))\.){}(([-]\d?)|(\d{})|([-]\d)|([-]))$/;
/*
* 只能是中文汉字
*/
var regChineseChar=/^[\u4e00-\u9fa5]+$/;
/*
* 网址
* 只允许http、https、ftp这三种
* 如:http://www.baidu.com
*/
var regWeb=/^(([hH][tT]{}[pP][sS]?)|([fF][tT][pP]))\:\/\/[wW]{}\.[\w-]+\.\w{,}(\/.*)?$/;
/*
* 日期格式验证
* 因为日期格式比较多,主要验证了以下类型
* 2012-05-14、2012/05/6、2012.5.14、20120528
*/
var regDate=/^[-]\d{}([-|\/|\.])?((\d)|([-])|([-]))\(([||]\d)|([-])|[-])$/;
/*
* 调用以上正则表达式的方法
* 以验证电话号码格式为例
*/
function onCheck(tel){
if(regMobile.test(tel)){
return true;
}else{
alert("联系方式格式不正确!");
}
}
Date.prototype.Format = function(formatStr)
{
var str = formatStr;
var Week = ['日','一','二','三','四','五','六'];
str=str.replace(/yyyy|YYYY/,this.getFullYear());
str=str.replace(/yy|YY/,(this.getYear() % )>?(this.getYear() % ).toString():'' + (this.getYear() % ));
str=str.replace(/MM/,this.getMonth()>?this.getMonth().toString():'' + this.getMonth());
str=str.replace(/M/g,this.getMonth());
str=str.replace(/w|W/g,Week[this.getDay()]);
str=str.replace(/dd|DD/,this.getDate()>?this.getDate().toString():'' + this.getDate());
str=str.replace(/d|D/g,this.getDate());
str=str.replace(/hh|HH/,this.getHours()>?this.getHours().toString():'' + this.getHours());
str=str.replace(/h|H/g,this.getHours());
str=str.replace(/mm/,this.getMinutes()>?this.getMinutes().toString():'' + this.getMinutes());
str=str.replace(/m/g,this.getMinutes());
str=str.replace(/ss|SS/,this.getSeconds()>?this.getSeconds().toString():'' + this.getSeconds());
str=str.replace(/s|S/g,this.getSeconds());
return str;
}
function dateFormat(date, format){
date = new Date();
var map = {
"YY": date.getYear(),
"M": date.getMonth() + , //月份
"d": date.getDate(), //日
"h": date.getHours(), //小时
"m": date.getMinutes(), //分
"s": date.getSeconds(), //秒
"q": Math.floor((date.getMonth() + ) / ), //季度
"S": date.getMilliseconds() //毫秒
};
format = format.replace(/([YMdhmsqS])+/g, function(all, t){
var v = map[t];
if (v !== undefined) {
if (all.length > ) {
v = "" + v;
v = v.substr(v.length - );
}
return v;
}
else if (t === "Y") {
return (date.getFullYear() + "").substr( - all.length);
}
return all;
});
return format;
}
html文件验证
<script src="jquery.min.js"></script>
<script src="Verification.js"></script>
<script>
$(function(){
$('#number').blur(function(){
number = $('#number).val();
if ( number == '') {
return false;
} else {
checkIdCard = validataIdCard(number);
}
});
});
$('#phone_number').blur(function(){
phone_number = $('#phone_number').val();
if(phone_number == ''){
return false;
} else {
checkPhone = onCheck(phone_number);
}
});
</script>