javascript 各种验证的总结
2012-05-23 17:38
183 查看
/** * 2012-3-13 * js 各种表单数据验证 */ /**************************************************************************************/ /*************************************数字的验 证*****************************************/ /**************************************************************************************/ /** * 检查输入的一串字符是否全部是数字 * 输入:str 字符 串 * 返回:true 或 flase; true表示为数字 */ function checkNum(str){ return str.match(/D/) == null; } /** * 检查输入的一串字符是否为小数 * 输入:str 字符串 * 返 回:true 或 flase; true表示为小数 */ function checkDecimal(str){ if (str.match(/^-?d+(.d+)?$/g) == null) { return false; } else { return true; } } /** * 检查输入的一串字符是否为整型数据 * 输入:str 字 符串 * 返回:true 或 flase; true表示为小数 */ function checkInteger(str){ if (str.match(/^[-+]?d*$/) == null) { return false; } else { return true; } } /**************************************************************************************/ /*************************************字符的验 证*****************************************/ /**************************************************************************************/ /** * 检查输入的一串字符是否是字符 * 输入:str 字符串 * 返 回:true 或 flase; true表示为全部为字符 不包含汉字 */ function checkStr(str){ if (/[^x00-xff]/g.test(str)) { return false; } else { return true; } } /** * 检查输入的一串字符是否包含汉字 * 输入:str 字符串 * 返 回:true 或 flase; true表示包含汉字 */ function checkChinese(str){ if (escape(str).indexOf(“%u”) != -1) { return true; } else { return false; } } /** * 检查输入的邮箱格式是否正确 * 输入:str 字符串 * 返 回:true 或 flase; true表示格式正确 */ function checkEmail(str){ if (str.match(/[A-Za-z0-9_-]+[@](S*)(net|com|cn|org|cc|tv|[0-9]{1,3})(S*)/g) == null) { return false; } else { return true; } } /** * 检查输入的手机号码格式是否 正确 * 输入:str 字符串 * 返回:true 或 flase; true表示格式正确 */ function checkMobilePhone(str){ if (str.match(/^(?:13d|15[89])-?d{5}(d{3}|*{3})$/) == null) { return false; } else { return true; } } /** * 检查输入的固定电话号码是否 正确 * 输入:str 字符串 * 返回:true 或 flase; true表示格式正确 */ function checkTelephone(str){ if (str.match(/^(([0+]d{2,3}-)?(0d{2,3})-)(d{7,8})(-(d{3,}))?$/) == null) { return false; } else { return true; } } /** * 检查QQ的格式是否正确 * 输入:str 字符串 * 返 回:true 或 flase; true表示格式正确 */ function checkQQ(str){ if (str.match(/^d{5,10}$/) == null) { return false; } else { return true; } } /** * 检查输入的身份证号是否正确 * 输入:str 字符串 * 返 回:true 或 flase; true表示格式正确 */ function checkCard(str){ //15位数身份证正则表达式 var arg1 = /^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$/; //18位数身份证正则表达式 var arg2 = /^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])((d{4})|d{3}[A-Z])$/; if (str.match(arg1) == null && str.match(arg2) == null) { return false; } else { return true; } } /** * 检查输入的IP地址是否正确 * 输入:str 字符串 * 返 回:true 或 flase; true表示格式正确 */ function checkIP(str){ var arg = /^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$/; if (str.match(arg) == null) { return false; } else { return true; } } /** * 检查输入的URL地址是否正确 * 输入:str 字符串 * 返 回:true 或 flase; true表示格式正确 */ function checkURL(str){ if (str.match(/(http[s]?|ftp)://[^/.]+?..+w$/i) == null) { return false } else { return true; } } /** * 检查输入的字符是否具有特殊字符 * 输入:str 字符串 * 返 回:true 或 flase; true表示包含特殊字符 * 主要用于注册信息的时候验证 */ function checkQuote(str){ var items = new Array(“~”, “`”, “!”, “@”, “#”, “$”, “%”, “^”, “&”, “*”, “{“, “}”, “[", "]“, “(“, “)”); items.push(“:”, “;”, “‘”, “|”, “\”, “ <”, “>”, “?”, “/”, “ < <”, “>>”, “||”, “//”); items.push(“admin”, “administrators”, “administrator”, “管 理员”, “系统管理员”); items.push(“select”, “delete”, “update”, “insert”, “create”, “drop”, “alter”, “trancate”); str = str.toLowerCase(); for (var i = 0; i < items.length; i++) { if (str.indexOf(items[i]) >= 0) { return true; } } return false; } /**************************************************************************************/ /*************************************时间的验 证*****************************************/ /**************************************************************************************/ /** * 检查日期格式是否正确 * 输入:str 字符串 * 返 回:true 或 flase; true表示格式正确 * 注意:此处不能验证中文日期格式 * 验证短日期(2007-06-05) */ function checkDate(str){ //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)$))/); var value = str.match(/^(d{1,4})(-|/)(d{1,2})2(d{1,2})$/); if (value == null) { return false; } else { var date = new Date(value[1], value[3] – 1, value[4]); return (date.getFullYear() == value[1] && (date.getMonth() + 1) == value[3] && date.getDate() == value[4]); } } /** * 检查时间格式是否正确 * 输入:str 字符串 * 返回:true 或 flase; true表示 格式正确 * 验证时间(10:57:10) */ function checkTime(str){ var value = str.match(/^(d{1,2})(:)?(d{1,2})2(d{1,2})$/) if (value == null) { return false; } else { if (value[1] > 24 || value[3] > 60 || value[4] > 60) { return false } else { return true; } } } /** * 检查全日期时间格式是否正确 * 输入:str 字符串 * 返 回:true 或 flase; true表示格式正确 * (2007-06-05 10:57:10) */ function checkFullTime(str){ //var value = str.match(/^(d{1,4})(-|/)(d{1,2})2(d{1,2}) (d{1,2}):(d{1,2}):(d{1,2})$/); 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]$/); if (value == null) { return false; } else { //var date = new Date(checkFullTime[1], checkFullTime[3] – 1, checkFullTime[4], checkFullTime[5], checkFullTime[6], checkFullTime[7]); //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]); return true; } } /**************************************************************************************/ /************************************身份证号码的 验证*************************************/ /**************************************************************************************/ /** * 身份证15位编码规则:dddddd yymmdd xx p * dddddd: 地区码 * yymmdd: 出生年月日 * xx: 顺序类编码,无法确定 * p: 性别,奇数为男,偶数为女 * <p /> * 身 份证18位编码规则:dddddd yyyymmdd xxx y * dddddd:地区码 * yyyymmdd: 出生年月日 * xxx: 顺序类编码,无法确定,奇数为男,偶数为女 * y: 校验码,该位数值可通过前17位计算获得 * <p /> * 18 位号码加权因子为(从右到 左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ] * 验 证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ] * 校验位计算公 式:Y_P = mod( ∑(Ai×Wi),11 ) * i为身份证号码从右往左数的 2…18 位; Y_P为脚丫校验码所在校验码数 组位置 * */ var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];// 加权因子 var ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2];// 身份证验证位值.10代表X function IdCardValidate(idCard){ idCard = trim(idCard.replace(/ /g, “”)); if (idCard.length == 15) { return isValidityBrithBy15IdCard(idCard); } else if (idCard.length == 18) { var a_idCard = idCard.split(“”);// 得到身份证数组 if (isValidityBrithBy18IdCard(idCard) && isTrueValidateCodeBy18IdCard(a_idCard)) { return true; } else { return false; } } else { return false; } } /** * 判断身份证号码为18位时最后的验证位是否正确 * @param a_idCard 身份证号码数组 * @return */ function isTrueValidateCodeBy18IdCard(a_idCard){ var sum = 0; // 声明加权求和变量 if (a_idCard[17].toLowerCase() == ‘x’) { a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作 } for (var i = 0; i < 17; i++) { sum += Wi[i] * a_idCard[i];// 加权求和 } valCodePosition = sum % 11;// 得到验证码所位置 if (a_idCard[17] == ValideCode[valCodePosition]) { return true; } else { return false; } } /** * 通过身份证判断是男是女 * @param idCard 15/18位身份证号码 * @return ‘female’- 女、’male’-男 */ function maleOrFemalByIdCard(idCard){ idCard = trim(idCard.replace(/ /g, “”));// 对身份证号码做处理。包括字符间有空格。 if (idCard.length == 15) { if (idCard.substring(14, 15) % 2 == 0) { return ‘female’; } else { return ‘male’; } } else if (idCard.length == 18) { if (idCard.substring(14, 17) % 2 == 0) { return ‘female’; } else { return ‘male’; } } else { return null; } } /** * 验证18位数身份证号码中的生日是否是有效生日 * @param idCard 18位书身份证字符串 * @return */ function isValidityBrithBy18IdCard(idCard18){ var year = idCard18.substring(6, 10); var month = idCard18.substring(10, 12); var day = idCard18.substring(12, 14); var temp_date = new Date(year, parseFloat(month) – 1, parseFloat(day)); // 这里用getFullYear()获取年份,避免千年虫问题 if (temp_date.getFullYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) – 1 || temp_date.getDate() != parseFloat(day)) { return false; } else { return true; } } /** * 验证15位数身份证号码中的生日是否是有效生日 * @param idCard15 15位书身份证字符串 * @return */ function isValidityBrithBy15IdCard(idCard15){ var year = idCard15.substring(6, 8); var month = idCard15.substring(8, 10); var day = idCard15.substring(10, 12); var temp_date = new Date(year, parseFloat(month) – 1, parseFloat(day)); // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法 if (temp_date.getYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) – 1 || temp_date.getDate() != parseFloat(day)) { return false; } else { return true; } } //去掉字符串头尾空格 function trim(str){ return str.replace(/(^s*)|(s*$)/g, “”); }
其他技术函数
JS函数验证总结 //去除左侧空格 function LTrim(str) { return str.replace(/^\s*/g,""); } //去右空格 function RTrim(str) { return str.replace(/\s*$/g,""); } //去掉字符串两端的空格 function trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); } //去除字符串中间空格 function CTim(str) { return str.replace(/\s/g,''); } //是否为由数字组成的字符串 function is_digitals(str) { var reg=/^[0-9]*$/;//匹配整数 return reg.test(str); } //验证是否为整数,包括正负数; function Is_Int(str) { var reg=/^(-|\+)?\d+$/; return reg.test(str); } //是大于0的整数 function Is_positive_num(str) { var reg=/^\d+$/; return reg.test(str); } //负整数的验证 function Is_minus(str) { var reg=/^-\d+$/; return reg.test(str); } //验证是否为浮点数(正数) function IsPositiveFloat(str) { var check_float =new RegExp("^[1-9][0-9]*\.[0-9]+$");//匹配浮点数 return check_float.exec(str); } //是否为固定电话,区号3到4位,号码7到8位,区号和号码用"-"分割开,转接号码为1到6位,用小括号括起来紧跟在号码后面 function IsTelphone(str) { var reg=/^[0-9]{3,4}\-\d{7,8}(\(\d{1,6}\))?$/; if (reg.test(str)) return true; else return false; } //手机号码验证,验证13系列和158,159几种号码,长度11位 function IsMobel(str) { var reg0 = /^13\d{9}$/; var reg1 = /^158\d{8}$/; var reg2 = /^159\d{8}$/; return (reg0.test(str)||reg1.test(str)||reg2.test(str)) } //验证是否为中文 function IsChinese(str) { var reg=/^[\u0391-\uFFE5]+$/; return reg.test(str); } //验证是否为qq号码,长度为5-10位 function IsQq(str) { var reg=/^[1-9]\d{4,9}$/; return reg.test(str); } //验证邮编 function IsPostId(str) { var reg=/^\d{6}$/; return reg.test(str); } //验证是否未email function IsEmail(str) { var reg=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; return reg.test(str); } //验证IP地址 function IsIp(str) { var check=function(v) { try { return (v<=255 && v>=0) }catch(x){ return false; } } var re=str.split(".") return (re.length==4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false } //身份证验证 function IsIdnum(str) { var City={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 info="" if(!/^\d{17}(\d|x)$/i.test(str)) return false; str=str.replace(/x$/i,"a"); if(City[parseInt(str.substr(0,2))]==null) { alert( "Error:非法地区"); return false; } 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())) { alert("Error:非法生日"); 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) { alert("Error:非法证号"); return false; } return City[parseInt(str.substr(0,2))]+","+sBirthday+","+(str.substr(16,1)%2?"男":"女") } //判断是否短时间,形如 (13:04:06) function IsTime(str) { var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/); if (a == null) { alert('输入的参数不是时间格式'); return false; } if (a[1]>24 || a[3]>60 || a[4]>60) { alert("时间格式不对"); return false } return true; } //短日期,形如 (2003-12-05) function IsDate(str) { var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); if(r==null) return false; var d= new Date(r[1], r[3]-1, r[4]); return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]); } // 长时间,形如 (2003-12-05 13:04:06) function IsDateTime(str) { var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; var r = str.match(reg); if(r==null) return false; var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]); } // 判断字符全部由a-Z或者是A-Z的字字母组成 function Is_Letters(str) { var reg=/[^a-zA-Z]/g; return reg.test(str); } // 判断字符由字母和数字组成。 function Is_letter_num(str) { var reg=/[^0-9a-zA-Z]/g; return reg.test(str); } //判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母 function IsUserName(str) { var reg=/^([a-zA-z_]{1})([\w]*)$/g; return reg.test(str); } // 判断浏览器的类型 function GetBrowseType() { alert(window.navigator.appName); } //判断ie的版本 function Get_Eidition() { alert(window.navigator.appVersion); } //判断客户端的分辨率 function GetResolution() { alert(window.screen.height); alert(window.screen.width); } // 判断用户名是否为数字字母下滑线 function notchinese(str) { var reg=/[^A-Za-z0-9_]/g if (reg.test(str)) { return (false); } else { return(true); } } //验证url function IsUrl(str) { var reg=/^(http\:\/\/)?([a-z0-9][a-z0-9\-]+\.)?[a-z0-9][a-z0-9\-]+[a-z0-9](\.[a-z]{2,4})+(\/[a-z0-9\.\,\-\_\%\?\=\&]?)?$/i; return reg.test(str); } //判断是否含有汉字 function ContentWord(str) { if (escape(str).indexOf("%u")!=-1) return true; else return false; } //页面里回车到下一控件的焦点 function Enter2Tab(e) { try { var ōb = IsFireFox ? e.target : event.srcElement; if(ob.tagName == "INPUT" &&(ob.type == "text" ||ob.type == "password" ||ob.type == "checkbox" ||ob.type == "radio") ||ob.tagName == "SELECT") { var key = IsFireFox ? e.which : event.keyCode; if (key == 13) { if (IsFireFox) { event.which = 9; } else { event.keyCode = 9; } } } } catch(E){} } /** * 初始化一个xmlhttp对象 */ function InitAjax() { var ajax=false; try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { ajax = false; } } if (!ajax && typeof XMLHttpRequest!='undefined') { ajax = new XMLHttpRequest(); } return ajax; } function callback(ajax) { //如果执行是状态正常,那么就把返回的内容赋值给上面指定的层 if (ajax.readyState == 4 && ajax.status == 200) { show.innerHTML = ajax.responseText; } else { alert("there was a problem retrieving the xml data:"+ajax.statusText); } } function getNews(newsID) { //如果没有把参数newsID传进来 if (typeof(newsID) == 'undefined') { return false; } //需要进行Ajax的URL地址 var url = "show.php?id="+ newsID; //获取新闻显示层的位置 var show = document.getElementById("show_news"); //实例化Ajax对象 var ajax = InitAjax(); //使用Get方式进行请求 ajax.open("GET",url,true); //获取执行状态 ajax.onreadystatechange =function() { if (ajax.readyState == 4 && ajax.status == 200) { show.innerHTML = ajax.responseText; } } //发送空 ajax.send(null); } //_______全选择__________ function SelectAll() { var empty; var f = document.forms[0]; for (var i = 0; i < f.length; i++) { empty = f[i]; if (empty.type == "checkbox" && empty.disabled == false) empty.checked = true; } } //__________返选择_________ function SelectReverse() { var empty; var f = document.forms[0]; for (var i = 0; i < f.length; i++) { empty = f[i]; if (empty.type == "checkbox" && empty.disabled == false) if(empty.checked == true) { empty.checked = false; } else { empty.checked = true; } } }
相关文章推荐
- JavaScript总结(1)-Asp.Net 中利用JavaScript实现客户端验证
- js 各种验证小总结
- Javascript弹出窗口的各种方法总结
- javascript验证代码总结
- 实用Javascript 传值, 数据验证, 事件触发总结
- JavaScript总结(1)-Asp.Net 中利用JavaScript实现客户端验证
- 使用纯JavaScript或者jquery插件实现各种验证码总结
- appium 学习各种小功能总结--功能有《滑动图片、保存截图、验证元素是否存在、》---新手总结(大牛勿喷,新手互相交流)
- PHP / JavaScript / jQuery 表单验证与处理总结: 第①部分 PHP 表单验证与处理
- 各种dialog,alertdialog,AlertDialog.Builder(this)的总结,并封住成javaScript调用
- JavaScript 各种验证收集
- javascript各种类型数据在表达式中转换成布尔型值的规则总结
- javascript入门·表单与表单元素总结(表单验证)
- javascript获取网页各种高宽及位置总结
- 七牛---关于JavaScript SDK各种问题总结
- JavaScript中的各种操作符使用总结
- javascript入门·表单与表单元素总结(表单验证)
- JavaScript中的各种宽高以及位置总结
- JavaScript中数组的各种操作的总结(必看篇)
- JavaScript中利用各种循环进行遍历的方式总结