您的位置:首页 > Web前端 > JavaScript

js校验的通用工具

2006-07-05 10:40 405 查看
页面写法和webwork差不多,ip的校验我只设了数字的校验,有更好的请大家告知谢谢!
1.validator.js:
var re_dt = /^(\d{1,2})\-(\d{1,2})\-(\d{4})$/,
re_tm = /^(\d{1,2})\:(\d{1,2})\:(\d{1,2})$/,
a_formats = {
<!-- 输入的字段须为数字 -->
'number' : function isNumber(s) {
var digits = "0123456789";
var i = 0;
var sLength = s.length;
while ((i < sLength)){
var c = s.charAt(i);
if (digits.indexOf(c) == -1) return false;
i++;
}
return true;
},
<!-- Email字段必须符合一定的格式 -->
'email' : /^[\w-\.]+\@[\w\.-]+\.[a-z]{2,4}$/,
<!-- 电话号码字段必须符合一定的格式 -->;
'phone' : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,
<!-- 手机字段必须符合一定的格式 -->
'mobile' : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,
<!-- URL字段必须符合一定的格式 -->
'url' : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\?+!]*([^<>\"\"])*$/,
<!-- 身份证验证 -->
'idCardNo' : function isIDno(str){

aCity={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 aCity = "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 iSum = 0;
var idCardLength = str.length;
if(!/^\d{17}(\d|x)$/i.test(str)&&!/^\d{15}$/i.test(str))
{
return false;
}
//在后面的运算中x相当于数字10,所以转换成a
str = str.replace(/x$/i,"a");
var curCity = str.substr(0,2);
if(!(aCity.indexOf(curCity) > 0) )
{
return false;
}
if (idCardLength==18)
{
sBirthday=str.substr(6,4)+"-"+Number(str.substr(10,2))+"-"+Number(str.substr(12,2));
var d = new Date(sBirthday.replace(/-/g,"/"))
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
{
return false;
}

for(var i = 17;i>=0;i --)
iSum += (Math.pow(2,i) % 11) * parseInt(str.charAt(17 - i),11);
if(iSum%11!=1)
{
return false;
}
}
else if (idCardLength==15)
{
sBirthday = "19" + str.substr(6,2) + "-" + Number(str.substr(8,2)) + "-" +
Number(str.substr(10,2));
var d = new Date(sBirthday.replace(/-/g,"/"))
var dd = d.getFullYear().toString() + "-" + (d.getMonth()+1) + "-" + d.getDate();
if(sBirthday != dd)
{
return false;
}
}
return true;
},
<!-- 货币字段必须符合一定的格式 -->
'currency' : /^\d+(\.\d+)?$/,
<!-- 邮编字段必须符合一定的格式 -->
'postCode' : /^[1-9]\d{5}$/,
<!-- 必须输入整型字段 -->
'int' : function isInteger(str){
if (/^\d+$/.test(str) == true) {
return true;
}
return false;
},
<!-- 必须输入双精度型字段 -->
'double' : /^[-\+]?\d+(\.\d+)?$/,
<!-- 输入的字段须为字母 -->
'abcletter' : /^[A-Za-z]+$/,
<!-- 输入的字段须为中文 -->
'chinese' : /^[\u0391-\uFFE5]+$/,
<!-- 必须输入日期型字段yyyy-MM-dd格式 -->
'date' : function isdate(strDate){
var strSeparator = "-"; //日期分隔符
var strDateArray;
var intYear;
var intMonth;
var intDay;
var boolLeapYear;

strDateArray = strDate.split(strSeparator);

if(strDateArray.length!=3) return false;

intYear = parseInt(strDateArray[0],10);
intMonth = parseInt(strDateArray[1],10);
intDay = parseInt(strDateArray[2],10);

if(isNaN(intYear)||isNaN(intMonth)||isNaN(intDay)) return false;

if(intMonth>12||intMonth<1) return false;

if((intMonth==1||intMonth==3||intMonth==5||intMonth==7||intMonth==8||intMonth==10||intMonth==12)&&(intDay>31||intDay<1)) return false;

if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&(intDay>30||intDay<1)) return false;

if(intMonth==2){
if(intDay<1) return false;

boolLeapYear = false;
if((intYear%100)==0){
if((intYear%400)==0) boolLeapYear = true;
}
else{
if((intYear%4)==0) boolLeapYear = true;
}

if(boolLeapYear){
if(intDay>29) return false;
}
else{
if(intDay>28) return false;
}
}

return true;
},
<!-- 必须输入日期型字段hh:mm:ss格式 -->
'time' : function (s_time) {
// check format
if (!re_tm.test(s_time))
return false;
// check allowed ranges
if (RegExp.$1 > 23 || RegExp.$2 > 59 || RegExp.$3 > 59)
return false;
return true;
},
<!-- IP地址字段必须符合一定的格式 -->
'ipAddress' : /(\d+)\.(\d+)\.(\d+)\.(\d+)/,
<!-- 输入的字段须为基本字符如a-z,0-9,_等 -->
'baseword' : /^\\w*$/
},
a_messages = [
'表单名不存在',
'表单"%form%"无需要校验数据',
'表单"%form%"不存在',
'表单中"%n%" 输入框定义属性不完全. 属性"l"不存在',
'在表单"%form%"中名为"%n%"的输入框不存在',
'id="%t%"标签不存在',
'校验匹配错误. 匹配项 "%m%"不存在',
'"%l%" 是必填项目!',
'"%l%" 必须大于等于 %min% 长度!',
'"%l%" 必须小于等于 %max% 长度!',
'"%l%"对于值"%v%"是非法格式!',
'"%l%" 必须匹配 "%ml%"'
]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: