工作中经常会对输入内容进行校验,比如:是否是手机号,是否是身份证号码,是否包含特殊字符,当前环境是否是手机端等。因为这些用的比较高频,每个需要用到的项目都需要拷贝一份到所需项目中,比较繁琐,不易于维护,所以就打算封装了一个工具类,并发布到npm仓库,项目中只需npm进行安装就可以使用。
此外也封装了一些常用的函数,例如:
防抖、节流、文件下载,手机号脱敏、数据类型判断等。(具体使用请看下面说明)
dateFormat() // 可以快速获取当前时间输出的格式。
dateFormat('yyyy-MM-dd hh:mm:ss') // 2023-04-23 11:50:12
joinUrlQuery() // 传入一个对象,可以把对象转换成参数拼接在url链接上
joinUrlQuery({name: 'wangxinyan', age: 33}) // ?name=wangxinyan&age=33
getParams() // 可以快速获取url参数中需要获取key的value值,例如:https://www.baidu.com?name=wxy
getParams('name') // 输出wxy
一、安装
npm i js-tools-zk 或 yarn add js-tools-zk
二、使用
// 按需加载,没有用到的可不引入
import {
isPhone,
isEmail,
isPostcode,
isFixedphone,
isURL,
isIdCard,
isMobile,
isWX,
isPatrn,
isEmojo,
isIp,
isIMEI,
isLicense,
isLeapYear,
checkPwd,
getRandomNumber,
dateFormat,
joinUrlQuery,
getParams,
fileDownload,
debounce,
throttle,
hideMobile,
typeOf
} from 'js-tools-zk'
// 是否是手机号
console.log(isPhone('13600000000')) // true
// 是否是邮箱
console.log(isEmail('wangxinyan@qq.com')) // true
// 是否是邮编
console.log(isPostcode('518173')) // true
// 是否是座机
console.log(isFixedphone('0713-7669133')) // true
// 是否是url
console.log(isURL('http://www.baidu.com')) // true
// 是否是身份证号码
console.log(isIdCard('42010019901016519X')) // true
// 是否是移动端
console.log(isMobile()) // 不用传参 手机端返回true、电脑端返回false
// 是否微信环境
console.log(isWX()) // 不用传参 微信环境内为true、否则返回false
// 是否包含特殊字符
console.log(isPatrn('?$~!123456')) // true ,
// 目前 [`~!@#$%^&*_|+<>?"{}.\/;'[\]] 中括号内的字符都标记为特殊字符, 主要校验非文字输入
// 是否包含表情符号
console.log(isEmojo('hello')) // false 如果输入包含表情符号则返回 true
// 是否是IP地址
console.log(isIp('192.168.1.100')) // true
// 是否是手机机身码(IMEI)
console.log(isIMEI('1234567')) // false 可上网查看手机IMEI规则
// 是否统一社会信用代码 (营业执照)
console.log(isLicense('12345678')) // false 可上网查看营业执照规则
// 是否是闰年
console.log(isLeapYear('2020')) // true
// 验证密码强度
console.log(checkPwd('123456')) // 默认为0、包含字母返回1、数字+字母返回2、数字+字母+特殊符号返回3
// 获取指定范围内随机数
console.log(getRandomNumber(10, 30)) // 22 随机返回10~30之间的数字
// 转换日期为yyyy-MM-dd HH:mm:ss字符串
console.log(dateFormat(date, 'yyyy-MM-dd hh:mm:ss')) // date为传入的时间 , 2023-04-21 19:08:16
// 拼接url参数
console.log(joinUrlQuery({name: 'wangxinyan', age: 33})) // ?name=wangxinyan&age=30
// 获取url中参数 例如 url = https://www.baidu.com?age=33
console.log(getParams('age')) // 33
// 文件下载
fileDownload(url, fileName) //传入2个参数 [要下载的文件路径和下载后展示的文件名]
// 防抖 vue为例
methods: {
btnClick() {
debounce(() => {
console.log('测试防抖')
}, 600)
}
}
// 节流
methods: {
btnClick() {
throttle(() => {
console.log('测试节流')
}, 600)
}
}
// 手机号脱敏
hideMobile('13612345678') // 136****5678
// 数据类型判断
typeOf('张三丰') // string
typeOf(33) // Number
typeOf([]) // array
typeOf({}) // object
typeOf(new Date()) // date
typeOf(null) // null
typeOf(true) // boolean
typeOf(() => { }) // function
说明:如果有用到该工具类不满足的场景,可以给我留言,我会及时更新。