本文整理了關於Javascript表單驗證的所有涉及到的,大家仔細閱讀一定會有所收獲的
//驗證字符串非空 var Validator = { VerityLib: { IsNotEmpty: function (input) { if (input != '') { return true; } else { return false; } }, //驗證數字(double類型) [可以包含負號和小數點] IsNumber: function (input) { var regex = /^-?\d+$|^(-?\d+)(\.\d+)?$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證整數 IsInteger: function (input) { var regex = /^-?\d+$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證非負整數 IsIntegerNotNagtive: function (input) { var regex = /^\d+$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證正整數 IsIntegerPositive: function (input) { var regex = /^[0-9]*[1-9][0-9]*$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證小數 IsDecimal: function (input) { var regex = /^([-+]?[1-9]\d*\.\d+|-?0\.\d*[1-9]\d*)$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證只包含英文字母 IsEnglishCharacter: function (input) { var regex = /^[A-Za-z]+$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證只包含數字和英文字母 IsIntegerAndEnglishCharacter: function (input) { var regex = /^[0-9A-Za-z]+$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證只包含漢字 IsChineseCharacter: function (input) { var regex = /^[\u4e00-\u9fa5]+$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證數字長度范圍(數字前端的0計長度)[若要驗證固定長度,可傳入相同的兩個長度數值] IsIntegerLength: function (input, lengthBegin, lengthEnd) { var pattern = '^\\d{' + lengthBegin + ',' + lengthEnd + '}$'; var regex = new RegExp(pattern); if (input.match(regex)) { return true; } else { return false; } }, //驗證字符串包含內容 IsStringInclude: function (input, withEnglishCharacter, withNumber, withChineseCharacter) { if (!Boolean(withEnglishCharacter) && !Boolean(withNumber) && !Boolean(withChineseCharacter)) { return false; //如果英文字母、數字和漢字都沒有,則返回false } var pattern = '^['; if (Boolean(withEnglishCharacter)) { pattern += 'a-zA-Z'; } if (Boolean(withNumber)) { pattern += '0-9'; } if (Boolean(withChineseCharacter)) { pattern += '\\u4E00-\\u9FA5'; } pattern += ']+$'; var regex = new RegExp(pattern); if (input.match(regex)) { return true; } else { return false; } }, //驗證字符串長度范圍 [若要驗證固定長度,可傳入相同的兩個長度數值] IsStringLength: function (input, LengthBegin, LengthEnd) { var pattern = '^.{' + lengthBegin + ',' + lengthEnd + '}$'; var regex = new RegExp(pattern); if (input.match(regex)) { return true; } else { return false; } }, //驗證字符串長度范圍(字符串內只包含數字和/或英文字母)[若要驗證固定長度,可傳入相同的兩個長度數值] IsStringLengthOnlyNumberAndEnglishCharacter: function (input, LengthBegin, LengthEnd) { var pattern = '^[0-9a-zA-z]{' + lengthBegin + ',' + lengthEnd + '}$'; var regex = new RegExp(pattern); if (input.match(regex)) { return true; } else { return false; } }, //驗證字符串長度范圍 [若要驗證固定長度,可傳入相同的兩個長度數值] IsStringLengthByInclude: function (input, withEnglishCharacter, withNumber, withChineseCharacter, lengthBegin, lengthEnd) { if (!withEnglishCharacter && !withNumber && !withChineseCharacter) { return false; //如果英文字母、數字和漢字都沒有,則返回false } var pattern = '^['; if (Boolean(withEnglishCharacter)) pattern += 'a-zA-Z'; if (Boolean(withNumber)) pattern += '0-9'; if (Boolean(withChineseCharacter)) pattern += '\\u4E00-\\u9FA5'; pattern += ']{' + lengthBegin + ',' + lengthEnd + '}$'; var regex = new RegExp(pattern); if (input.match(regex)) { return true; } else { return false; } }, //驗證字符串字節數長度范圍 [若要驗證固定長度,可傳入相同的兩個長度數值;每個漢字為兩個字節長度] IsStringByteLength: function (input, lengthBegin, lengthEnd) { var regex = /[^\x00-\xff]/g; var byteLength = input.replace(regex, 'ok').length; if (byteLength >= lengthBegin && byteLength <= lengthEnd) { return true; } else { return false; } }, //驗證日期 [只能驗證日期,不能驗證時間] IsDateTime: function (input) { if (Date.parse(input)) { return true; } else { return false; } }, //驗證固定電話號碼 [3位或4位區號;區號可以用小括號括起來;區號可以省略;區號與本地號間可以用減號或空格隔開;可以有3位數的分機號,分機號前要加減號] IsTelePhoneNumber: function (input) { var regex = /^(((0\d2|0\d{2})[- ]?)?\d{8}|((0\d3|0\d{3})[- ]?)?\d{7})(-\d{3})?$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證手機號碼 [可匹配"(+86)013325656352",括號可以省略,+號可以省略,(+86)可以省略,11位手機號前的0可以省略;11位手機號第二位數可以是3、4、5、8中的任意一個] IsMobilePhoneNumber: function (input) { var regex = /^((\+)?86|((\+)?86)?)0?1[3458]\d{9}$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證電話號碼(可以是固定電話號碼或手機號碼) IsPhoneNumber: function (input) { var regex = /^((\+)?86|((\+)?86)?)0?1[3458]\d{9}$|^(((0\d2|0\d{2})[- ]?)?\d{8}|((0\d3|0\d{3})[- ]?)?\d{7})(-\d{3})?$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證郵政編碼 IsZipCode: function (input) { var regex = /^\d{6}$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證電子郵箱 [@字符前可以包含字母、數字、下劃線和點號;@字符後可以包含字母、數字、下劃線和點號;@字符後至少包含一個點號且點號不能是最後一個字符;最後一個點號後只能是字母或數字] IsEmail: function (input) { ////郵箱名以數字或字母開頭;郵箱名可由字母、數字、點號、減號、下劃線組成;郵箱名(@前的字符)長度為3~18個字符;郵箱名不能以點號、減號或下劃線結尾;不能出現連續兩個或兩個以上的點號、減號。 //var regex = /^[a-zA-Z0-9]((?<!(\.\.|--))[a-zA-Z0-9\._-]){1,16}[a-zA-Z0-9]@([0-9a-zA-Z][0-9a-zA-Z-]{0,62}\.)+([0-9a-zA-Z][0-9a-zA-Z-]{0,62})\.?|((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/; var regex = /^([\w-\.]+)@([\w-\.]+)(\.[a-zA-Z0-9]+)$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證網址(可以匹配IPv4地址但沒對IPv4地址進行格式驗證;IPv6暫時沒做匹配)[允許省略"://";可以添加端口號;允許層級;允許傳參;域名中至少一個點號且此點號前要有內容] IsURL: function (input) { ////每級域名由字母、數字和減號構成(第一個字母不能是減號),不區分大小寫,單個域長度不超過63,完整的域名全長不超過256個字符。在DNS系統中,全名是以一個點“.”來結束的,例如“www.nit.edu.cn.”。沒有最後的那個點則表示一個相對地址。 ////沒有例如"http://"的前綴,沒有傳參的匹配 //var regex = /^([0-9a-zA-Z][0-9a-zA-Z-]{0,62}\.)+([0-9a-zA-Z][0-9a-zA-Z-]{0,62})\.?$/; //var regex = /^(((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp)://)|(www\.))+(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(/[a-zA-Z0-9\&%_\./-~-]*)?$/; var regex = /^([a-zA-Z]+:\/\/)?([\w-\.]+)(\.[a-zA-Z0-9]+)(:\d{0,5})?\/?([\w-\/]*)\.?([a-zA-Z]*)\??(([\w-]*=[\w%]*&?)*)$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證IPv4地址 [第一位和最後一位數字不能是0或255;允許用0補位] IsIPv4: function (input) { var regex = /^(25[0-4]|2[0-4]\d]|[01]?\d{2}|[1-9])\.(25[0-5]|2[0-4]\d]|[01]?\d?\d)\.(25[0-5]|2[0-4]\d]|[01]?\d?\d)\.(25[0-4]|2[0-4]\d]|[01]?\d{2}|[1-9])$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證IPv6地址 [可用於匹配任何一個合法的IPv6地址] IsIPv6: function (input) { var regex = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證身份證號 [可驗證一代或二代身份證] IsIDCard: function (input) { input = input.toUpperCase(); //驗證身份證號碼格式 [一代身份證號碼為15位的數字;二代身份證號碼為18位的數字或17位的數字加字母X] if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/i.test(input))) { return false; } //驗證省份 var arrCity = { 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: '國外' }; if (arrCity[parseInt(input.substr(0, 2))] == null) { return false; } //驗證出生日期 var regBirth, birthSplit, birth; var len = input.length; if (len == 15) { regBirth = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/); birthSplit = input.match(regBirth); birth = new Date('19' + birthSplit[2] + '/' + birthSplit[3] + '/' + birthSplit[4]); if (!(birth.getYear() == Number(birthSplit[2]) && (birth.getMonth() + 1) == Number(birthSplit[3]) && birth.getDate() == Number(birthSplit[4]))) { return false; } return true; } else if (len == 18) { regBirth = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/i); birthSplit = input.match(regBirth); birth = new Date(birthSplit[2] + '/' + birthSplit[3] + '/' + birthSplit[4]); if (!(birth.getFullYear() == Number(birthSplit[2]) && (birth.getMonth() + 1) == Number(birthSplit[3]) && birth.getDate() == Number(birthSplit[4]))) { return false; } //驗證校驗碼 var valnum; var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var nTemp = 0, i; for (i = 0; i < 17; i++) { nTemp += input.substr(i, 1) * arrInt[i]; } valnum = arrCh[nTemp % 11]; if (valnum != input.substr(17, 1)) { return false; } return true; } return false; }, //驗證經度 IsLongitude: function (input) { var regex = /^[-\+]?((1[0-7]\d{1}|0?\d{1,2})\.\d{1,5}|180\.0{1,5})$/; if (input.match(regex)) { return true; } else { return false; } }, //驗證緯度 IsLatitude: function (input) { var regex = /^[-\+]?([0-8]?\d{1}\.\d{1,5}|90\.0{1,5})$/; if (input.match(regex)) { return true; } else { return false; } } } }
這次整理的很全面,很詳細,希望可以真正的幫助到大家。對大家熟練掌握Javascript更有幫助。