最近在做项目的时候,有很多表单验证的内容,在此进行记录以下
在校验表单的时候主要使用了Jquery validator插件其中自定义校验如下
手机号
jQuery.validator.addMethod("isMobile", function(value, element) {
var length = value.length;
var mobile = /(^0{0,1}1[3|4|5|6|7|8|9][0-9]{9}$)/;
// /^1\d{10}$/ /(^0{0,1}1[3|4|5|6|7|8|9][0-9]{9}$)/
return this.optional(element) || (length == 11 && mobile.test(value));
}, "请正确填写您的手机号码");
带区号的电话号码
jQuery.validator.addMethod("isPhone", function(value, element) {
var isPhone = /^([0-9]{3,4}-)?[0-9]{7,8}$/;
var isMob=/^((\+?86)|(\(\+86\)))?(13[012356789][0-9]{8}|15[012356789][0-9]{8}|18[02356789][0-9]{8}|147[0-9]{8}|1349[0-9]{7})$/;
return this.optional(element) || (isMob.test(value)||isPhone.test(value));
}, "请正确填写您的电话号码,含有区号的请加\"-\"");
4-20位,中文,字母,数字,中间可以存在空格,首尾不能有空格
jQuery.validator.addMethod("isCompanyName", function(value, element,params) {
var strLength = value.length;
var reg =/^[\u4e00-\u9fa5A-Za-z0-9][\u4e00-\u9fa5A-Za-z0-9\s]*[\u4e00-\u9fa5A-Za-z0-9]$/;
return this.optional(element) || reg.test(value) && 4<=strLength<=20;
}, "4-20位,中文,字母,数字,中间可以存在空格,首尾不能有空格");
6-16位字母,数字,英文符号,区分大小写
jQuery.validator.addMethod("isPassWord", function(value, element,params) {
var strLength = value.length;
var reg =/^([A-Za-z0-9]|[^0-9/D]){6,16}$/;
return this.optional(element) || reg.test(value) && 4<=strLength<=20;
}, "6-16位字母,数字,英文符号,区分大小写");
传真
jQuery.validator.addMethod("fax", function(value, element){
return this.optional(element) || /^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/.test(value);
}, "传真格式错误");
身份证校验
jQuery.validator.addMethod("isIdCardNo", function (value, element) {
return this.optional(element) || isIdCardNo(value);
}, "身份证号码错误");
//增加身份证验证
function isIdCardNo(num) {
var factorArr = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
var parityBit = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2");
var varArray = new Array();
var intValue;
var lngProduct = 0;
var intCheckDigit;
var intStrLen = num.length;
var idNumber = num;
// initialize
if ((intStrLen != 15) && (intStrLen != 18)) {
return false;
}
// check and set value
for (i = 0; i < intStrLen; i++) {
varArray[i] = idNumber.charAt(i);
if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
return false;
} else if (i < 17) {
varArray[i] = varArray[i] * factorArr[i];
}
}
if (intStrLen == 18) {
//check date
var date8 = idNumber.substring(6, 14);
if (isDate8(date8) == false) {
return false;
}
// calculate the sum of the products
for (i = 0; i < 17; i++) {
lngProduct = lngProduct + varArray[i];
}
// calculate the check digit
intCheckDigit = parityBit[lngProduct % 11];
// check last digit
if (varArray[17] != intCheckDigit) {
return false;
}
}
else { //length is 15
//check date
var date6 = idNumber.substring(6, 12);
if (isDate6(date6) == false) {
return false;
}
}
return true;
}
function isDate6(sDate) {
if (!/^[0-9]{6}$/.test(sDate)) {
return false;
}
var year, month, day;
year = sDate.substring(0, 4);
month = sDate.substring(4, 6);
if (year < 1700 || year > 2500) return false
if (month < 1 || month > 12) return false
return true
}
function isDate8(sDate) {
if (!/^[0-9]{8}$/.test(sDate)) {
return false;
}
var year, month, day;
year = sDate.substring(0, 4);
month = sDate.substring(4, 6);
day = sDate.substring(6, 8);
var iaMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if (year < 1700 || year > 2500) 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
}
网友评论