利用正则表达式扩展更多表单验证
js代码:
<script type="text/javascript">
$(function(){
//验证中文
$.extend($.fn.validatebox.defaults.rules,{
chs:{
validator:function(value,param){
var reg = /^[\u2E80-\u9FFF]+$/;
return reg.test(value);
},
message:"只能输入中文"
}
});
//中文,字母,数字,下划线及中文符号
$.extend($.fn.validatebox.defaults.rules,{
stringCheck:{
validator:function(value,param){
var reg = /^[\u0391-\uFFE5\w]+$/;
return reg.test(value);
},
message:"只能输入中文字母数字下划线"
}
});
//手机号码验证
$.extend($.fn.validatebox.defaults.rules,{
mobile:{
validator:function(value,param){
var reg = /^(((13[0-9]{1})|(14[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
return value.length==11 && reg.test(value);
},
message:"请正确输入手机号码"
}
});
//验证身份证号码简单正则
$.extend($.fn.validatebox.defaults.rules,{
idCard:{
validator:function(value,param){
var reg = /^\d{15}(\d{2}[A-Za-z0-9])?$/i;
return reg.test(value);
},
message:"请正确输入身份证号码"
}
});
//验证身份证号码完整
$.extend($.fn.validatebox.defaults.rules,{
idCardNo:{
validator:function(value,param){
return isIdCardNo(value);
},
message:"请正确输入身份证号码"
}
});
//身份证号码是否有效
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 error;
var varArray = new Array();
var intValue;
var lngProduct = 0;
var intCheckDigit;
var intStrLen = num.length; //身份证号码长度
var idNumber = num;
if ((intStrLen != 15) && (intStrLen != 18)) {
//error = "输入身份证号码长度不对!";
return false;
}
for(i=0;i<intStrLen;i++) {
varArray[i] = idNumber.charAt(i);
if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
//error = "错误的身份证号码!.";
return false;
} else if (i < 17) {
varArray[i] = varArray[i]*factorArr[i];
}
}
if (intStrLen == 18) {
//验证日期是否有效
var date8 = idNumber.substring(6,14);
if (isDate8(date8) == false) {
//error = "身份证中日期信息不正确!.";
return false;
}
for(i=0;i<17;i++) {
lngProduct = lngProduct + varArray[i];
}
intCheckDigit = 12 - lngProduct % 11;
switch (intCheckDigit) {
case 10:
intCheckDigit = 'X';
break;
case 11:
intCheckDigit = 0;
break;
case 12:
intCheckDigit = 1;
break;
}
if (varArray[17].toUpperCase() != intCheckDigit) {
// error = "身份证效验位错误!...正确为: " + intCheckDigit + ".";
return false;
}
} else{
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
}
//判断是否为“YYYYMMDD”式的时期
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
}
});
</script>
jsp页面:
<body>
<div>
<table>
<tr>
<td>验证中文:</td>
<td><input type="text" id="chs" class="easyui-validatebox"
data-options="validType:'chs'"></td>
</tr>
<tr>
<td>验证中文,字母,数字,下划线及中文符号:</td>
<td><input type="text" id="cstringCheck"
class="easyui-validatebox" data-options="validType:'stringCheck'"></td>
</tr>
<tr>
<td>手机:</td>
<td><input type="text" id="mobile" class="easyui-validatebox"
data-options="validType:'mobile'"></td>
</tr>
<tr>
<td>身份证号码(简单正则):</td>
<td><input type="text" id="idCard" class="easyui-validatebox"
data-options="validType:'idCard'"></td>
</tr>
<tr>
<td>身份证号码(完整):</td>
<td><input type="text" id="idCardNo" class="easyui-validatebox"
data-options="validType:'idCardNo'"></td>
</tr>
</table>
</div>
</body>