/** * 判断是否为空 * @param val 待判断值 * @returns 是否合法 */ export const isRequired = (val: string): boolean => { return val !== '' } // 提取url params参数 export function queryString(str: string) { const params = str.split('?')[1] // 截取?号后的字符串即name=itclanCoder&study=css const param = params.split('&') // 通过&符号进行分割即["name=itclanCoder", "study=css"] const obj: { [key: string]: string } = {} // 用一个对象存储目标值 for (let i = 0; i < param.length; i++) { // 循环遍历截取出来的param数组 const paramsA = param[i].split('=') // 通过split,=继续对数组params每一项进行分割,生成数组["name", "itclanCoder"] const key = paramsA[0] // 取数组项["name", "itclanCoder"]中第0位,即name const value = paramsA[1] // 取数组项["name", "itclanCoder"]中第1位,即itclanCoder obj[key] = value } return obj } // 去除字符串中的特殊符号 export function stripscript(s: string) { var pattern = /[[\]\/:*?"<>|#]/ var rs = '' for (var i = 0; i < s.length; i++) { rs = rs + s.substr(i, 1).replace(pattern, '') } return rs } // /** * 判断是否为整数 * @param value * @returns 是否合法 */ export const isInteger = (value: any) => { return Number.isInteger(Number(value)) } /** * 判断是否为ip * @param ip 待判断 * @returns 是否合法 */ export const isIp = (ip: string): boolean => { var rep = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/ return rep.test(ip) } /** * 判断端口是否合法 * @param port 待判断端口 * @returns 是否合法 */ export const isPort = (port: number | string): boolean => { if (!isInteger(port) || port > 65535 || port < 1) { return false } return true } /** * 判断ip+端口是否合法 * @param ipPort 待判断端口 * @returns 是否合法 */ export const isIpPort = (ipPort: any): boolean => { const rep = /^(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|localhost|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+):(?:[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/ return rep.test(ipPort) } // /** * 判断整数范围 * @param value 待判断数值 * @param max 最大值 * @param min 最小值 * @returns 是否符合数值范围 */ export const isInRange = (value: number, max: any, min: any): boolean => { if (!isInteger(value) || value > max || min > value) { return false } return true } /** * 判断整数,小数范围 * @param value 待判断数值 * @param max 最大值 * @param min 最小值 * @returns 是否符合数值范围 */ export const isInRangeNum = (value: number, min = 0, max = 10): boolean => { if (value > max || value < min) { return false } return true } /** * 验证小写字母 * @param str * @returns */ export function validateLowerCase(str: string) { const reg = /^[a-z]+$/ return reg.test(str) } /* 验证大写字母 */ export function validateUpperCase(str: string) { const reg = /^[A-Z]+$/ return reg.test(str) } /* 验证大小写字母 */ export function validateAlphabets(str: string) { const reg = /^[A-Za-z]+$/ return reg.test(str) } /** * 验证邮箱 * @param email * @returns {boolean} */ export function validateEmail(email: string) { const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ return re.test(email) } /** * 验证手机号 * @param phone * @returns {boolean} */ export function validateMobile(phone: string) { const re = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/ return re.test(phone) } /** * 校验身份证号 * @param value * @returns */ export function validateIdCardNo(value: string) { const re = /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/ return re.test(value) } /** * * @param value 验证电话号码 * @returns */ export function validatePhone(value: string) { const re = /(\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$/ return re.test(value) } /** * 强类型密码验证 */ export function validatePasswordStrong(value: string) { const re = /^(?![0-9]+$)(?![a-zA-Z]+$)(?![0-9a-zA-Z]+$)(?![0-9\\W]+$)(?![a-zA-Z\\W]+$)[0-9A-Za-z\\W]{6,18}$/ return re.test(value) } /** * 弱类型密码验证 */ export function validatePasswordWeak(value: string) { const re = /[0-9A-Za-z\\W]{6,18}$/ return re.test(value) } // 密码强度校验,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符 export function validatePassword(value: string) { const re = /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/ return re.test(value) }