前端工具库之-公共校验文件

        说明:基本的一些用户输入的校验,例如校验密码由6-18位数字和英文组成,判断是否是手机号,判断是否是身份证号,判断是否是邮箱,判断是否中文等待。防抖,节流。

        创建文件夹 validate.js

/**
 * @description 判读是否为外链
 * @param path
 * @returns {boolean}
 */
export function isExternal(path) {
    return /^(https?:|mailto:|tel:)/.test(path)
}

/**
 * @description 校验密码由6-18位数字和英文组成
 * @param str
 * @returns {boolean}
 */
export function isPassword(str) {
    let reg = /^[a-zA-Z0-9]{6,18}$/
    return reg.test(str)
}

/**
 *
 * @description 判断是否为正整数包括0
 * @param value
 * @returns {boolean}
 */
export function isNumber(value) {
    const reg = /^(0|[1-9][0-9]*)$/
    return reg.test(value)
}

/**
 * @description 判断是否是名称
 * @param value
 * @returns {boolean}
 */
export function isName(value) {
    const reg = /^[\u4e00-\u9fa5a-zA-Z0-9]+$/
    return reg.test(value)
}

/**
 * @description 判断是否是字符串
 * @param str
 * @returns {boolean}
 */
export function isString(str) {
    return typeof str === 'string' || str instanceof String
}

/**
 * @description 判断是否是数组
 * @param arg
 * @returns {arg is any[]|boolean}
 */
export function isArray(arg) {
    if (typeof Array.isArray === 'undefined') {
        return Object.prototype.toString.call(arg) === '[object Array]'
    }
    return Array.isArray(arg)
}

/**
 * @description 判断是否是手机号
 * @param str
 * @returns {boolean}
 */
export function isPhone(str) {
    const reg = /^1\d{10}$/
    return reg.test(str)
}

/**
 * @description 判断是否是身份证号(第二代)
 * @param str
 * @returns {boolean}
 */
export function isIdCard(str) {
    const reg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
    return reg.test(str)
}

/**
 * @description 判断是否是邮箱
 * @param str
 * @returns {boolean}
 */
export function isEmail(str) {
    const reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
    return reg.test(str)
}

/**
 * @description 判断是否是邮编
 * @param str
 * @returns {boolean}
 */
export function isPost(str) {
    const reg = /^[1-9][0-9]{5}$/
    return reg.test(str)
}

/**
 * @description 判断是否中文
 * @param str
 * @returns {boolean}
 */
export function isChina(str) {
    const reg = /^[\u4E00-\u9FA5]{2,4}$/
    return reg.test(str)
}

/**
 * @description 判断是否为固话或手机
 * @param str
 * @returns {boolean}
 */
export function isTelOrMobile(str) {
    const reg = /^((0\d{2,3}-\d{7,8})|(1[3456789]\d{9}))$/
    return reg.test(str)
}

/**
 * @description 判断是否为数字且最多两位小数
 * @param str
 * @returns {boolean}
 */
export function isNum(str) {
    const reg = /^\d+(\.\d{1,2})?$/
    return reg.test(str)
}

/**
 * @description 判断是否数字字母组合统一社会信用代码
 * @param str
 * @returns {boolean}
 */
export function isCompanyCode(str) {
    const reg = /^[0-9a-zA-Z]*$/g
    return reg.test(str)
}

/**
 * @description 判断是否为网址
 * @param str
 * @returns {boolean}
 */
export function isWebsiteURL(str) {
    const reg = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\*\+,;=.]+$/
    return reg.test(str)
}

/**
 * @description 金额判断 大于0的数字 保留两位小数
 * @param str
 * @returns {boolean}
 */

export function isAmount(str) {
    const reg = /^(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/
    return reg.test(str)
}

/**
 * @description 费率 为数字0-100,最多保留两位小数
 * @param str
 * @returns {boolean}
 */

export function isRate(str) {
    // 0 - 100
    const reg = /^(((\d|[1-9]\d)(\.\d{1,2})?))$/
    return reg.test(str)
}

/*
 * 防抖
 * fn [function] 需要防抖的函数
 * delay [number] 毫秒,防抖期限值
 * eg. getCouponMethod: debounce(function() {}, 1000)
 */
export const debounce = (fn, delay) => {
    let timer = null //借助闭包
    return function () {
        let that = this
        let args = arguments
        if (timer) {
            clearTimeout(timer) //进入该分支语句,说明当前正在一个计时过程中,并且又触发了相同事件。所以要取消当前的计时,重新开始计时
        }
        timer = setTimeout(function () {
            fn.apply(that, args)
        }, delay) // 进入该分支说明当前并没有在计时,那么就开始一个计时
    }
}

/*
 * 节流
 * fn [function] 需要节流的函数
 * delay [number] 毫秒,节流期限值
 * eg. getCouponMethod: debounce(function() {}, 1000)
 */
export const throttle = (fn, delay) => {
    let valid = true
    return function () {
        let that = this
        let args = arguments
        if (!valid) {
            //休息时间 暂不接客
            return false
        }
        // 工作时间,执行函数并且在间隔期内把状态位设为无效
        valid = false
        setTimeout(() => {
            fn.apply(that, args)
            valid = true
        }, delay)
    }
}

猜你喜欢

转载自blog.csdn.net/qq_67801847/article/details/132081268