Javascript数据验证类

1/* 2用途:检查输入字符串是否符合金额格式,格式定义为带小数的正数,小数点后最多三位 3输入:s:字符串 4返回:如果通过验证返回true,否则返回false 5*/ 6function isMoney( s ) 7{ 8 var regu = "^[0-9]+[\.][0-9]{0,3}$"; 9 var re = new RegExp(regu); 10 if (re.test(s)) { 11 return true; 12 } 13 else { 14 return false; 15 } 16}; 17 18/* 19用途:检查输入字符串是否只由英文字母和数字和下划线组成 20输入:s:字符串 21返回:如果通过验证返回true,否则返回false 22*/ 23function isNumberOr_Letter( s ) 24{ 25 //判断是否是数字或字母 26 var regu = "^[0-9a-zA-Z\_]+$"; 27 var re = new RegExp(regu); 28 if (re.test(s)) { 29 return true; 30 } 31 else { 32 return false; 33 } 34}; 35 36/* 37用途:检查输入字符串是否只由英文字母和数字组成 38输入:s:字符串 39返回:如果通过验证返回true,否则返回false 40*/ 41function isNumberOrLetter( s ) 42{ 43 //判断是否是数字或字母 44 var regu = "^[0-9a-zA-Z]+$"; 45 var re = new RegExp(regu); 46 if (re.test(s)) { 47 return true; 48 } 49 else { 50 return false; 51 } 52}; 53 54/* 55用途:检查输入字符串是否只由汉字、字母、数字组成 56输入:s:字符串 57返回:如果通过验证返回true,否则返回false 58*/ 59function isChinaOrNumbOrLett( s ) 60{ 61 //判断是否是汉字、字母、数字组成 62 var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$"; 63 var re = new RegExp(regu); 64 if (re.test(s)) { 65 return true; 66 } 67 else { 68 return false; 69 } 70}; 71 72/* 73用途:判断是否是日期 74输入:date:日期;fmt:日期格式 75返回:如果通过验证返回true,否则返回false 76*/ 77function isDate( date, fmt ) 78{ 79 if (fmt == null) { 80 fmt = "yyyyMMdd"; 81 } 82 var yIndex = fmt.indexOf("yyyy"); 83 if (yIndex ==- 1) { 84 return false; 85 } 86 var year = date.substring(yIndex, yIndex + 4); 87 var mIndex = fmt.indexOf("MM"); 88 if (mIndex ==- 1) { 89 return false; 90 } 91 var month = date.substring(mIndex, mIndex + 2); 92 var dIndex = fmt.indexOf("dd"); 93 if (dIndex ==- 1) { 94 return false; 95 } 96 var day = date.substring(dIndex, dIndex + 2); 97 if (!isNumber(year) || year > "2100" || year < "1900") { 98 return false; 99 } 100 if (!isNumber(month) || month > "12" || month < "01") { 101 return false; 102 } 103 if (day > getMaxDay(year, month) || day < "01") { 104 return false; 105 } 106 return true; 107}; 108 109 110 111/** 112* 检查输入的一串字符是否全部是数字 113* 输入:str 字符串 114* 返回:true 或 flase; true表示为数字 115*/ 116function checkNum(str) { 117 return str.match(/\D/) == null; 118} 119 120/** 121* 检查输入的一串字符是否为小数 122* 输入:str 字符串 123* 返回:true 或 flase; true表示为小数 124*/ 125function checkDecimal(str) { 126 if (str.match(/^-?\d+(\.\d+)?$/g) == null) { 127 return false; 128 } 129 else { 130 return true; 131 } 132} 133 134/** 135* 检查输入的一串字符是否为整型数据 136* 输入:str 字符串 137* 返回:true 或 flase; true表示为小数 138*/ 139function checkInteger(str) { 140 if (str.match(/^[-+]?\d*$/) == null) { 141 return false; 142 } 143 else { 144 return true; 145 } 146} 147 148/** 149* 检查输入的一串字符是否是字符 150* 输入:str 字符串 151* 返回:true 或 flase; true表示为全部为字符 不包含汉字 152*/ 153function checkStr(str) { 154 if (/[^\x00-\xff]/g.test(str)) { 155 return false; 156 } 157 else { 158 return true; 159 } 160} 161 162/** 163* 检查输入的一串字符是否包含汉字 164* 输入:str 字符串 165* 返回:true 或 flase; true表示包含汉字 166*/ 167function checkChinese(str) { 168 if (escape(str).indexOf("%u") != -1) { 169 return true; 170 } 171 else { 172 return false; 173 } 174} 175 176/** 177* 检查输入的邮箱格式是否正确 178* 输入:str 字符串 179* 返回:true 或 flase; true表示格式正确 180*/ 181function checkEmail(str) { 182 if (str.match(/[A-Za-z0-9_-]+[@](\S*)(net|com|cn|org|cc|tv|[0-9]{1,3})(\S*)/g) == null) { 183 return false; 184 } 185 else { 186 return true; 187 } 188} 189 190/** 191* 检查输入的手机号码格式是否正确 192* 输入:str 字符串 193* 返回:true 或 flase; true表示格式正确 194*/ 195function checkMobilePhone(str) { 196 if (str.match(/^(?:13\d|15[89])-?\d{5}(\d{3}|\*{3})$/) == null) { 197 return false; 198 } 199 else { 200 return true; 201 } 202} 203 204/** 205* 检查输入的固定电话号码是否正确 206* 输入:str 字符串 207* 返回:true 或 flase; true表示格式正确 208*/ 209function checkTelephone(str) { 210 if (str.match(/^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/) == null) { 211 return false; 212 } 213 else { 214 return true; 215 } 216} 217 218/** 219* 检查QQ的格式是否正确 220* 输入:str 字符串 221* 返回:true 或 flase; true表示格式正确 222*/ 223function checkQQ(str) { 224 if (str.match(/^\d{5,10}$/) == null) { 225 return false; 226 } 227 else { 228 return true; 229 } 230} 231 232/** 233* 检查输入的身份证号是否正确 234* 输入:str 字符串 235* 返回:true 或 flase; true表示格式正确 236*/ 237function checkCard(str) { 238 //15位数身份证正则表达式 239 var arg1 = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/; 240 //18位数身份证正则表达式 241 var arg2 = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[A-Z])$/; 242 if (str.match(arg1) == null && str.match(arg2) == null) { 243 return false; 244 } 245 else { 246 return true; 247 } 248} 249 250/** 251* 检查输入的IP地址是否正确 252* 输入:str 字符串 253* 返回:true 或 flase; true表示格式正确 254*/ 255function checkIP(str) { 256 var arg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/; 257 if (str.match(arg) == null) { 258 return false; 259 } 260 else { 261 return true; 262 } 263} 264 265/** 266* 检查输入的URL地址是否正确 267* 输入:str 字符串 268* 返回:true 或 flase; true表示格式正确 269*/ 270function checkURL(str) { 271 if (str.match(/(http[s]?|ftp):\/\/[^\/\.]+?\..+\w$/i) == null) { 272 return false 273 } 274 else { 275 return true; 276 } 277} 278 279//去掉字符串头尾空格 280function trim(str) { 281 return str.replace(/(^\s*)|(\s*$)/g, ""); 282} 283 284/** 285* 检查输入的字符是否具有特殊字符 286* 输入:str 字符串 287* 返回:true 或 flase; true表示包含特殊字符 288* 主要用于注册信息的时候验证 289*/ 290function checkQuote(str) { 291 var items = new Array("~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "{", "}", "[", "]", "(", ")"); 292 items.push(":", ";", "'", "|", "\\", "<", ">", "?", "/", "<<", ">>", "||", "//"); 293 items.push("admin", "administrators", "administrator", "管理员", "系统管理员"); 294 items.push("select", "delete", "update", "insert", "create", "drop", "alter", "trancate"); 295 str = str.toLowerCase(); 296 for (var i = 0; i < items.length; i++) { 297 if (str.indexOf(items[i]) >= 0) { 298 return true; 299 } 300 } 301 return false; 302} 303 304/** 305* 检查日期格式是否正确 306* 输入:str 字符串 307* 返回:true 或 flase; true表示格式正确 308* 注意:此处不能验证中文日期格式 309* 验证短日期(2007-06-05) 310*/ 311function checkDate(str) { 312 //var value=str.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(11|0?[469])(-)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(-)(0?2)(-)(29)$)|(^([3579][26]00)(-)(0?2)(-)(29)$)|(^([1][89][0][48])(-)(0?2)(-)(29)$)|(^([2-9][0-9][0][48])(-)(0?2)(-)(29)$)|(^([1][89][2468][048])(-)(0?2)(-)(29)$)|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29)$)|(^([1][89][13579][26])(-)(0?2)(-)(29)$)|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/); 313 var value = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 314 if (value == null) { 315 return false; 316 } 317 else { 318 var date = new Date(value[1], value[3] - 1, value[4]); 319 return (date.getFullYear() == value[1] && (date.getMonth() + 1) == value[3] && date.getDate() == value[4]); 320 } 321} 322 323/** 324* 检查时间格式是否正确 325* 输入:str 字符串 326* 返回:true 或 flase; true表示格式正确 327* 验证时间(10:57:10) 328*/ 329function checkTime(str) { 330 var value = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/) 331 if (value == null) { 332 return false; 333 } 334 else { 335 if (value[1] > 24 || value[3] > 60 || value[4] > 60) { 336 return false 337 } 338 else { 339 return true; 340 } 341 } 342} 343 344/** 345* 检查全日期时间格式是否正确 346* 输入:str 字符串 347* 返回:true 或 flase; true表示格式正确 348* (2007-06-05 10:57:10) 349*/ 350function checkFullTime(str) { 351 //var value = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/); 352 var value = str.match(/^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/); 353 if (value == null) { 354 return false; 355 } 356 else { 357 //var date = new Date(checkFullTime[1], checkFullTime[3] - 1, checkFullTime[4], checkFullTime[5], checkFullTime[6], checkFullTime[7]); 358 //return (date.getFullYear() == value[1] && (date.getMonth() + 1) == value[3] && date.getDate() == value[4] && date.getHours() == value[5] && date.getMinutes() == value[6] && date.getSeconds() == value[7]); 359 return true; 360 } 361 362} 363 364 365 366/**************************************************************************************/ 367/************************************身份证号码的验证*************************************/ 368/**************************************************************************************/ 369 370/** 371* 身份证15位编码规则:dddddd yymmdd xx p 372* dddddd:地区码 373* yymmdd: 出生年月日 374* xx: 顺序类编码,无法确定 375* p: 性别,奇数为男,偶数为女 376* <p /> 377* 身份证18位编码规则:dddddd yyyymmdd xxx y 378* dddddd:地区码 379* yyyymmdd: 出生年月日 380* xxx:顺序类编码,无法确定,奇数为男,偶数为女 381* y: 校验码,该位数值可通过前17位计算获得 382* <p /> 383* 18位号码加权因子为(从右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ] 384* 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ] 385* 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 ) 386* i为身份证号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置 387* 388*/ 389var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]; // 加权因子 390var ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]; // 身份证验证位值.10代表X 391function IdCardValidate(idCard) { 392 idCard = trim(idCard.replace(/ /g, "")); 393 if (idCard.length == 15) { 394 return isValidityBrithBy15IdCard(idCard); 395 } 396 else 397 if (idCard.length == 18) { 398 var a_idCard = idCard.split(""); // 得到身份证数组 399 if (isValidityBrithBy18IdCard(idCard) && isTrueValidateCodeBy18IdCard(a_idCard)) { 400 return true; 401 } 402 else { 403 return false; 404 } 405 } 406 else { 407 return false; 408 } 409} 410 411/** 412* 判断身份证号码为18位时最后的验证位是否正确 413* @param a_idCard 身份证号码数组 414* @return 415*/ 416function isTrueValidateCodeBy18IdCard(a_idCard) { 417 var sum = 0; // 声明加权求和变量 418 if (a_idCard[17].toLowerCase() == 'x') { 419 a_idCard[17] = 10; // 将最后位为x的验证码替换为10方便后续操作 420 } 421 for (var i = 0; i < 17; i++) { 422 sum += Wi[i] * a_idCard[i]; // 加权求和 423 } 424 valCodePosition = sum % 11; // 得到验证码所位置 425 if (a_idCard[17] == ValideCode[valCodePosition]) { 426 return true; 427 } 428 else { 429 return false; 430 } 431} 432 433/** 434* 通过身份证判断是男是女 435* @param idCard 15/18位身份证号码 436* @return 'female'-女、'male'-男 437*/ 438function maleOrFemalByIdCard(idCard) { 439 idCard = trim(idCard.replace(/ /g, "")); // 对身份证号码做处理。包括字符间有空格。 440 if (idCard.length == 15) { 441 if (idCard.substring(14, 15) % 2 == 0) { 442 return 'female'; 443 } 444 else { 445 return 'male'; 446 } 447 } 448 else 449 if (idCard.length == 18) { 450 if (idCard.substring(14, 17) % 2 == 0) { 451 return 'female'; 452 } 453 else { 454 return 'male'; 455 } 456 } 457 else { 458 return null; 459 } 460} 461 462/** 463* 验证18位数身份证号码中的生日是否是有效生日 464* @param idCard 18位书身份证字符串 465* @return 466*/ 467function GetBrithBy18IdCard(idCard18) { 468 var year = idCard18.substring(6, 10); 469 var month = idCard18.substring(10, 12); 470 var day = idCard18.substring(12, 14); 471 var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day)); 472 // 这里用getFullYear()获取年份,避免千年虫问题 473 if (temp_date.getFullYear() != parseFloat(year) || 474 temp_date.getMonth() != parseFloat(month) - 1 || 475 temp_date.getDate() != parseFloat(day)) { 476 return ""; 477 } 478 else { 479 var yyyy = temp_date.getFullYear(); 480 var mm = temp_date.getMonth() + 1; mm = mm < 10 ? "0" + mm : mm; 481 var dd = temp_date.getDate(); dd = dd < 10 ? "0" + dd : dd; 482 return yyyy + "-" + mm + "-" + dd; 483 } 484} 485/** 486* 验证18位数身份证号码中的生日是否是有效生日 487* @param idCard 18位书身份证字符串 488* @return 489*/ 490function isValidityBrithBy18IdCard(idCard18) { 491 var year = idCard18.substring(6, 10); 492 var month = idCard18.substring(10, 12); 493 var day = idCard18.substring(12, 14); 494 var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day)); 495 // 这里用getFullYear()获取年份,避免千年虫问题 496 if (temp_date.getFullYear() != parseFloat(year) || 497 temp_date.getMonth() != parseFloat(month) - 1 || 498 temp_date.getDate() != parseFloat(day)) { 499 return false; 500 } 501 else { 502 return true; 503 } 504} 505/** 506* 验证15位数身份证号码中的生日是否是有效生日 507* @param idCard15 15位书身份证字符串 508* @return 509*/ 510function isValidityBrithBy15IdCard(idCard15) { 511 var year = idCard15.substring(6, 8); 512 var month = idCard15.substring(8, 10); 513 var day = idCard15.substring(10, 12); 514 var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day)); 515 // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法 516 if (temp_date.getYear() != parseFloat(year) || 517 temp_date.getMonth() != parseFloat(month) - 1 || 518 temp_date.getDate() != parseFloat(day)) { 519 return false; 520 } 521 else { 522 return true; 523 } 524}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

一篇文章带你了解JavaScript日期

日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

个人博客开发之blog-api项目统一结果集api封装

前言由于返回jsonapi格式接口,所以我们需要通过javabean封装一个统一数据返回格式,便于和前端约定交互,状态码枚举ResultCodejavapackagecn.soboys.core.ret;importlombok.Getter;/@authorkenx@version1.0@date2021/6/1715:35

Javascript数据验证类 - HelloWorld