1. 程式人生 > 實用技巧 >史上最全JS表單驗證封裝類

史上最全JS表單驗證封裝類

  1 /*!
  2  * 資料驗證工具類
  3  * 2016-12-30
  4  * wangbt
  5  */
  6 
  7 /**
  8  * 相關認證的正則表示式
  9  */
 10 var verificatRet = {
 11     // 身份證
 12     identityCard: /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/,
 13     //identityCard : /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}\d|[X]{1}$/,
14 // 手機號 15 mobile: /^1\d{10}$/, 16 // 電子郵箱 17 email: /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/, 18 // 座機 19 phone: /^0\d{2,3}-?\d{7,8}$/, 20 // 數字 21 number: /^[0-9]*$/, 22 // 非零正整數 23 NZ_number: /^\+?[1-9][0-9]*$/, 24 // 非零負整數 25 _NZ_number: /^\-[1-9][0-9]*$/,
26 // 非負整數(正整數 + 0) 27 _noIntNumber: /^\d+$/, 28 // 非正整數(負整數 + 0) 29 noIntNumber: /^((-\d+)|(0+))$/, 30 // 整數 31 intNumber: /^-?\d+$/, 32 // 正浮點小數 33 doubleNumber: /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/, 34 // 非正浮點小數(負浮點小數 + 0) 35 _noDoubleNum: /^((-\d+(\.\d+)?)|(0+(\.0+)?))$/,
36 // 負浮點小數 37 _doubleNumber: /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/, 38 // 浮點數 39 double: /^(-?\d+)(\.\d+)?$/, 40 // 非0正整數 41 GreaterZero: /^[1-9]\d*$/, 42 //銀行卡號 43 BankCardNum: /^\d{16}|\d{19}$/, 44 //日期 45 Date: /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/, 46 DateTime:/^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/, 47 }; 48 49 /** 50 * 驗證工具類 51 */ 52 var verificat = { 53 /** 非空驗證 */ 54 isNotNull: function (source) { 55 if (source != null && source != undefined && source != 'undefined' && source != "") 56 return true; 57 return false; 58 }, 59 /**去空格後非空驗證*/ 60 isNotNullTrim: function (source) { 61 if (source != null && source != undefined && source != 'undefined' && $.trim(source) != "") 62 return true; 63 return false; 64 }, 65 /** 66 * 驗證字串最大長度【注:一個漢字的長度為2】 67 * @param source 字串 68 * @param num 指定的長度 69 */ 70 textMaxVer: function (source, num) { 71 if (source.replace(/[^\x00-\xff]/g, "**").length <= num) 72 return true; 73 return false; 74 }, 75 /** 76 * 驗證字串最小長度【注:一個漢字的長度為2】 77 * @param source 字串 78 * @param num 指定的長度 79 */ 80 textMinVer: function (source, num) { 81 if (source.replace(/[^\x00-\xff]/g, "**").length >= num) 82 return true; 83 return false; 84 }, 85 /** 身份證驗證 */ 86 identityVer: function (identity) { 87 if (identity != null && identity != "" && verificatRet.identityCard.test(identity)) { 88 return true; 89 } 90 return false; 91 }, 92 /** 手機號驗證 */ 93 mobileVer: function (mobile) { 94 if (mobile != null && mobile != "" && verificatRet.mobile.test(mobile)) { 95 return true; 96 } 97 return false; 98 }, 99 /** 郵箱驗證 */ 100 emailVer: function (email) { 101 if (email != null && email != "" && verificatRet.email.test(email)) { 102 return true; 103 } 104 return false; 105 }, 106 /** 電話驗證 */ 107 phoneVer: function (phone) { 108 if (phone != null && phone != "" && verificatRet.phone.test(mobile)) { 109 return true; 110 } 111 return false; 112 }, 113 /** 驗證是否為正整數 */ 114 numberVer: function (num) { 115 if (num != "") { 116 return verificatRet.number.test(num); 117 } else { 118 return false; 119 } 120 }, 121 /** 驗證非零正整數 */ 122 NZ_numberVer: function (num) { 123 if (num != "") { 124 return verificatRet.NZ_number.test(num); 125 } else { 126 return false; 127 } 128 }, 129 /** 驗證非零負整數 */ 130 _NZ_numberVer: function (num) { 131 if (num != "") { 132 return verificatRet._NZ_number.test(num); 133 } else { 134 return false; 135 } 136 }, 137 /** 驗證非負整數(正整數 + 0) */ 138 _noIntNumberVer: function (num) { 139 if (num != "") { 140 return verificatRet._noIntNumber.test(num); 141 } else { 142 return false; 143 } 144 }, 145 /** 驗證非正整數(負整數 + 0) */ 146 noIntNumberVer: function (num) { 147 if (num != "") { 148 return verificatRet.noIntNumber.test(num); 149 } else { 150 return false; 151 } 152 }, 153 /** 驗證整數 */ 154 intNumberVer: function (num) { 155 if (num != "") { 156 return verificatRet.intNumber.test(num); 157 } else { 158 return false; 159 } 160 }, 161 /** 驗證正浮點小數 */ 162 doubleNumberVer: function (num) { 163 if (num != "") { 164 return verificatRet.doubleNumber.test(num); 165 } else { 166 return false; 167 } 168 }, 169 /** 驗證非正浮點小數(負浮點小數 + 0) */ 170 _noDoubleNumVer: function (num) { 171 if (num != "") { 172 return verificatRet._noDoubleNum.test(num); 173 } else { 174 return false; 175 } 176 }, 177 /** 驗證負浮點小數 */ 178 _doubleNumberVer: function (num) { 179 if (num != "") { 180 return verificatRet._doubleNumber.test(num); 181 } else { 182 return false; 183 } 184 }, 185 /** 驗證浮點小數 */ 186 doubleVer: function (num) { 187 if (num != "") { 188 return verificatRet.double.test(num); 189 } else { 190 return false; 191 } 192 }, 193 /***大於0正整數*/ 194 GreaterZeroVar: function (num) { 195 if (num != "") { 196 return verificatRet.GreaterZero.test(num); 197 } else { 198 return false; 199 } 200 }, 201 /***銀行卡號*/ 202 BankCardNumVar: function (num) { 203 if (num != "") { 204 return verificatRet.BankCardNum.test(num); 205 } else { 206 return false; 207 } 208 }, 209 /**驗證日期:格式:2019-01-23**/ 210 Date: function (num) { 211 if (num != "") { 212 return verificatRet.Date.test(num); 213 } else { 214 return false; 215 } 216 }, 217 /**驗證日期:格式:2019-01-23 12:12:12**/ 218 DateTime: function (num) { 219 if (num != "") { 220 return verificatRet.DateTime.test(num); 221 } else { 222 return false; 223 } 224 } 225 }