正则表达式验证汇总
一、收集1 (转自https://blog.csdn.net/jumtre/article/details/13775351)
1 var Validator = { 2 VerityLib: { 3 //验证字符串非空 4 IsNotEmpty: function (input) { 5 if (input != '') { 6 return true; 7 } else { 8 return false; 9 } 10 }, 11 //验证数字(double类型) [可以包含负号和小数点] 12 IsNumber: function (input) { 13 var regex = /^-?\d+$|^(-?\d+)(\.\d+)?$/; 14 if (input.match(regex)) { 15 return true; 16 } else { 17 return false; 18 } 19 }, 20 //验证整数 21 IsInteger: function (input) { 22 var regex = /^-?\d+$/; 23 if (input.match(regex)) { 24 return true; 25 } else { 26 return false; 27 } 28 }, 29 //验证非负整数 30 IsIntegerNotNagtive: function (input) { 31 var regex = /^\d+$/; 32 if (input.match(regex)) { 33 return true; 34 } else { 35 return false; 36 } 37 }, 38 //验证正整数 39 IsIntegerPositive: function (input) { 40 var regex = /^[0-9]*[1-9][0-9]*$/; 41 if (input.match(regex)) { 42 return true; 43 } else { 44 return false; 45 } 46 }, 47 //验证小数 48 IsDecimal: function (input) { 49 var regex = /^([-+]?[1-9]\d*\.\d+|-?0\.\d*[1-9]\d*)$/; 50 if (input.match(regex)) { 51 return true; 52 } else { 53 return false; 54 } 55 }, 56 //验证只包含英文字母 57 IsEnglishCharacter: function (input) { 58 var regex = /^[A-Za-z]+$/; 59 if (input.match(regex)) { 60 return true; 61 } else { 62 return false; 63 } 64 }, 65 //验证只包含数字和英文字母 66 IsIntegerAndEnglishCharacter: function (input) { 67 var regex = /^[0-9A-Za-z]+$/; 68 if (input.match(regex)) { 69 return true; 70 } else { 71 return false; 72 } 73 }, 74 //验证只包含汉字 75 IsChineseCharacter: function (input) { 76 var regex = /^[\u4e00-\u9fa5]+$/; 77 if (input.match(regex)) { 78 return true; 79 } else { 80 return false; 81 } 82 }, 83 //验证数字长度范围(数字前端的0计长度)[若要验证固定长度,可传入相同的两个长度数值] 84 IsIntegerLength: function (input, lengthBegin, lengthEnd) { 85 var pattern = '^\\d{' + lengthBegin + ',' + lengthEnd + '}$'; 86 var regex = new RegExp(pattern); 87 if (input.match(regex)) { 88 return true; 89 } else { 90 return false; 91 } 92 }, 93 //验证字符串包含内容 94 IsStringInclude: function (input, withEnglishCharacter, withNumber, withChineseCharacter) { 95 if (!Boolean(withEnglishCharacter) && !Boolean(withNumber) && !Boolean(withChineseCharacter)) { 96 return false; //如果英文字母、数字和汉字都没有,则返回false 97 } 98 var pattern = '^['; 99 if (Boolean(withEnglishCharacter)) { 100 pattern += 'a-zA-Z'; 101 } 102 if (Boolean(withNumber)) { 103 pattern += '0-9'; 104 } 105 if (Boolean(withChineseCharacter)) { 106 pattern += '\\u4E00-\\u9FA5'; 107 } 108 pattern += ']+$'; 109 var regex = new RegExp(pattern); 110 if (input.match(regex)) { 111 return true; 112 } else { 113 return false; 114 } 115 }, 116 //验证字符串长度范围 [若要验证固定长度,可传入相同的两个长度数值] 117 IsStringLength: function (input, LengthBegin, LengthEnd) { 118 var pattern = '^.{' + lengthBegin + ',' + lengthEnd + '}$'; 119 var regex = new RegExp(pattern); 120 if (input.match(regex)) { 121 return true; 122 } else { 123 return false; 124 } 125 }, 126 //验证字符串长度范围(字符串内只包含数字和/或英文字母)[若要验证固定长度,可传入相同的两个长度数值] 127 IsStringLengthOnlyNumberAndEnglishCharacter: function (input, LengthBegin, LengthEnd) { 128 var pattern = '^[0-9a-zA-z]{' + lengthBegin + ',' + lengthEnd + '}$'; 129 var regex = new RegExp(pattern); 130 if (input.match(regex)) { 131 return true; 132 } else { 133 return false; 134 } 135 }, 136 //验证字符串长度范围 [若要验证固定长度,可传入相同的两个长度数值] 137 IsStringLengthByInclude: function (input, withEnglishCharacter, withNumber, withChineseCharacter, lengthBegin, lengthEnd) { 138 if (!withEnglishCharacter && !withNumber && !withChineseCharacter) { 139 return false; //如果英文字母、数字和汉字都没有,则返回false 140 } 141 var pattern = '^['; 142 if (Boolean(withEnglishCharacter)) 143 pattern += 'a-zA-Z'; 144 if (Boolean(withNumber)) 145 pattern += '0-9'; 146 if (Boolean(withChineseCharacter)) 147 pattern += '\\u4E00-\\u9FA5'; 148 pattern += ']{' + lengthBegin + ',' + lengthEnd + '}$'; 149 var regex = new RegExp(pattern); 150 if (input.match(regex)) { 151 return true; 152 } else { 153 return false; 154 } 155 }, 156 //验证字符串字节数长度范围 [若要验证固定长度,可传入相同的两个长度数值;每个汉字为两个字节长度] 157 IsStringByteLength: function (input, lengthBegin, lengthEnd) { 158 var regex = /[^\x00-\xff]/g; 159 var byteLength = input.replace(regex, 'ok').length; 160 if (byteLength >= lengthBegin && byteLength <= lengthEnd) { 161 return true; 162 } else { 163 return false; 164 } 165 }, 166 //验证日期 [只能验证日期,不能验证时间] 167 IsDateTime: function (input) { 168 if (Date.parse(input)) { 169 return true; 170 } else { 171 return false; 172 } 173 }, 174 //验证固定电话号码 [3位或4位区号;区号可以用小括号括起来;区号可以省略;区号与本地号间可以用减号或空格隔开;可以有3位数的分机号,分机号前要加减号] 175 IsTelePhoneNumber: function (input) { 176 var regex = /^(((\(0\d{2}\)|0\d{2})[- ]?)?\d{8}|((\(0\d{3}\)|0\d{3})[- ]?)?\d{7})(-\d{3})?$/; 177 if (input.match(regex)) { 178 return true; 179 } else { 180 return false; 181 } 182 }, 183 //验证手机号码 [可匹配"(+86)013325656352",括号可以省略,+号可以省略,(+86)可以省略,11位手机号前的0可以省略;11位手机号第二位数可以是3、4、5、6、7、8、9中的任意一个] 184 IsMobilePhoneNumber: function (input) { 185 var regex = /^(\((\+)?86\)|((\+)?86)?)0?1[3456789]\d{9}$/; 186 if (input.match(regex)) { 187 return true; 188 } else { 189 return false; 190 } 191 }, 192 //验证电话号码(可以是固定电话号码或手机号码) 193 IsPhoneNumber: function (input) { 194 var regex = /^(\((\+)?86\)|((\+)?86)?)0?1[3456789]\d{9}$|^(((\(0\d{2}\)|0\d{2})[- ]?)?\d{8}|((\(0\d{3}\)|0\d{3})[- ]?)?\d{7})(-\d{3})?$/; 195 if (input.match(regex)) { 196 return true; 197 } else { 198 return false; 199 } 200 }, 201 //验证邮政编码 202 IsZipCode: function (input) { 203 var regex = /^\d{6}$/; 204 if (input.match(regex)) { 205 return true; 206 } else { 207 return false; 208 } 209 }, 210 //验证电子邮箱 [@字符前可以包含字母、数字、下划线和点号;@字符后可以包含字母、数字、下划线和点号;@字符后至少包含一个点号且点号不能是最后一个字符;最后一个点号后只能是字母或数字] 211 IsEmail: function (input) { 212 ////邮箱名以数字或字母开头;邮箱名可由字母、数字、点号、减号、下划线组成;邮箱名(@前的字符)长度为3~18个字符;邮箱名不能以点号、减号或下划线结尾;不能出现连续两个或两个以上的点号、减号。 213 //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?)$/; 214 var regex = /^([\w-\.]+)@([\w-\.]+)(\.[a-zA-Z0-9]+)$/; 215 if (input.match(regex)) { 216 return true; 217 } else { 218 return false; 219 } 220 }, 221 //验证网址(可以匹配IPv4地址但没对IPv4地址进行格式验证;IPv6暂时没做匹配)[允许省略"://";可以添加端口号;允许层级;允许传参;域名中至少一个点号且此点号前要有内容] 222 IsURL: function (input) { 223 ////每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分大小写,单个域长度不超过63,完整的域名全长不超过256个字符。在DNS系统中,全名是以一个点“.”来结束的,例如“www.nit.edu.cn.”。没有最后的那个点则表示一个相对地址。 224 ////没有例如"http://"的前缀,没有传参的匹配 225 //var regex = /^([0-9a-zA-Z][0-9a-zA-Z-]{0,62}\.)+([0-9a-zA-Z][0-9a-zA-Z-]{0,62})\.?$/; 226 227 //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\&%_\./-~-]*)?$/; 228 var regex = /^([a-zA-Z]+:\/\/)?([\w-\.]+)(\.[a-zA-Z0-9]+)(:\d{0,5})?\/?([\w-\/]*)\.?([a-zA-Z]*)\??(([\w-]*=[\w%]*&?)*)$/; 229 if (input.match(regex)) { 230 return true; 231 } else { 232 return false; 233 } 234 }, 235 //验证IPv4地址 [第一位和最后一位数字不能是0或255;允许用0补位] 236 IsIPv4: function (input) { 237 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])$/; 238 if (input.match(regex)) { 239 return true; 240 } else { 241 return false; 242 } 243 }, 244 //验证IPv6地址 [可用于匹配任何一个合法的IPv6地址] 245 IsIPv6: function (input) { 246 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*$/; 247 if (input.match(regex)) { 248 return true; 249 } else { 250 return false; 251 } 252 }, 253 //验证身份证号 [可验证一代或二代身份证] 254 IsIDCard: function (input) { 255 input = input.toUpperCase(); 256 //验证身份证号码格式 [一代身份证号码为15位的数字;二代身份证号码为18位的数字或17位的数字加字母X] 257 if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/i.test(input))) { 258 return false; 259 } 260 //验证省份 261 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: '国外' }; 262 if (arrCity[parseInt(input.substr(0, 2))] == null) { 263 return false; 264 } 265 //验证出生日期 266 var regBirth, birthSplit, birth; 267 var len = input.length; 268 if (len == 15) { 269 regBirth = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/); 270 birthSplit = input.match(regBirth); 271 birth = new Date('19' + birthSplit[2] + '/' + birthSplit[3] + '/' + birthSplit[4]); 272 if (!(birth.getYear() == Number(birthSplit[2]) && (birth.getMonth() + 1) == Number(birthSplit[3]) && birth.getDate() == Number(birthSplit[4]))) { 273 return false; 274 } 275 return true; 276 } 277 else if (len == 18) { 278 regBirth = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/i); 279 birthSplit = input.match(regBirth); 280 birth = new Date(birthSplit[2] + '/' + birthSplit[3] + '/' + birthSplit[4]); 281 if (!(birth.getFullYear() == Number(birthSplit[2]) && (birth.getMonth() + 1) == Number(birthSplit[3]) && birth.getDate() == Number(birthSplit[4]))) { 282 return false; 283 } 284 //验证校验码 285 var valnum; 286 var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); 287 var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); 288 var nTemp = 0, i; 289 for (i = 0; i < 17; i++) { 290 nTemp += input.substr(i, 1) * arrInt[i]; 291 } 292 valnum = arrCh[nTemp % 11]; 293 if (valnum != input.substr(17, 1)) { 294 return false; 295 } 296 return true; 297 } 298 return false; 299 }, 300 //验证经度 301 IsLongitude: function (input) { 302 var regex = /^[-\+]?((1[0-7]\d{1}|0?\d{1,2})\.\d{1,5}|180\.0{1,5})$/; 303 if (input.match(regex)) { 304 return true; 305 } else { 306 return false; 307 } 308 }, 309 //验证纬度 310 IsLatitude: function (input) { 311 var regex = /^[-\+]?([0-8]?\d{1}\.\d{1,5}|90\.0{1,5})$/; 312 if (input.match(regex)) { 313 return true; 314 } else { 315 return false; 316 } 317 } 318 } 319 }
2018-09-27 10:57:05 更新中
越努力,越幸运;阿门。