1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256
| /** * 验证电子邮箱格式 */ function email(value) { return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value) }
/** * 验证手机格式 */ function mobile(value) { return /^1([3589]\d|4[5-9]|6[1-2,4-7]|7[0-8])\d{8}$/.test(value) }
/** * 验证URL格式 */ function url(value) { return /^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/ .test(value) }
/** * 验证日期格式 */ function date(value) { if (!value) return false // 判断是否数值或者字符串数值(意味着为时间戳),转为数值,否则new Date无法识别字符串时间戳 if (number(value)) value = +value return !/Invalid|NaN/.test(new Date(value).toString()) }
/** * 验证ISO类型的日期格式 */ function dateISO(value) { return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value) }
/** * 验证十进制数字 */ function number(value) { return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value) }
/** * 验证字符串 */ function string(value) { return typeof value === 'string' }
/** * 验证整数 */ function digits(value) { return /^\d+$/.test(value) }
/** * 验证身份证号码 */ function idCard(value) { return /^[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)$/.test( value ) }
/** * 是否车牌号 */ function carNo(value) { // 新能源车牌 const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/ // 旧车牌 const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/ if (value.length === 7) { return creg.test(value) } if (value.length === 8) { return xreg.test(value) } return false }
/** * 金额,只允许2位小数 */ function amount(value) { // 金额,只允许保留两位小数 return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value) }
/** * 中文 */ function chinese(value) { const reg = /^[\u4e00-\u9fa5]+$/gi return reg.test(value) }
/** * 只能输入字母 */ function letter(value) { return /^[a-zA-Z]*$/.test(value) }
/** * 只能是字母或者数字 */ function enOrNum(value) { // 英文或者数字 const reg = /^[0-9a-zA-Z]*$/g return reg.test(value) }
/** * 验证是否包含某个值 */ function contains(value, param) { return value.indexOf(param) >= 0 }
/** * 验证一个值范围[min, max] */ function range(value, param) { return value >= param[0] && value <= param[1] }
/** * 验证一个长度范围[min, max] */ function rangeLength(value, param) { return value.length >= param[0] && value.length <= param[1] }
/** * 是否固定电话 */ function landline(value) { const reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/ return reg.test(value) }
/** * 判断是否为空 */ function empty(value) { switch (typeof value) { case 'undefined': return true case 'string': if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true break case 'boolean': if (!value) return true break case 'number': if (value === 0 || isNaN(value)) return true break case 'object': if (value === null || value.length === 0) return true for (const i in value) { return false } return true } return false }
/** * 是否json字符串 */ function jsonString(value) { if (typeof value === 'string') { try { const obj = JSON.parse(value) if (typeof obj === 'object' && obj) { return true } return false } catch (e) { return false } } return false }
/** * 是否数组 */ function array(value) { if (typeof Array.isArray === 'function') { return Array.isArray(value) } return Object.prototype.toString.call(value) === '[object Array]' }
/** * 是否对象 */ function object(value) { return Object.prototype.toString.call(value) === '[object Object]' }
/** * 是否短信验证码 */ function code(value, len = 6) { return new RegExp(`^\\d{${len}}$`).test(value) }
/** * 是否函数方法 * @param {Object} value */ function func(value) { return typeof value === 'function' }
/** * 是否promise对象 * @param {Object} value */ function promise(value) { return object(value) && func(value.then) && func(value.catch) }
/** 是否图片格式 * @param {Object} value */ function image(value) { const newValue = value.split('?')[0] const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i return IMAGE_REGEXP.test(newValue) }
/** * 是否视频格式 * @param {Object} value */ function video(value) { const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i return VIDEO_REGEXP.test(value) }
/** * 是否为正则对象 * @param {Object} * @return {Boolean} */ function regExp(o) { return o && Object.prototype.toString.call(o) === '[object RegExp]' }
|