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

        说明:基本的一些用户输入的校验,例如校验密码由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)
    }
}

谷粒商城前端是一种电商平台的前端代码,其中包括了common和product两个模块的代码。 common模块是指一些通用的代码和组件,用于整个项目的公共部分。它包括了一些常用的工具函数、样式文件、公共组件等。这些代码和组件可以在整个项目中多次复用,提高了代码的复用性和维护性。common模块的代码主要是一些通用的功能实现,比如登录校验、权限管理、表单验证等。它们可以被其他模块引用,并在不同的页面中使用。 product模块是指商品相关的代码。在电商平台上,商品是核心之一,因此在前端代码中也需要相应的模块来实现和展示商品相关的功能。product模块的代码包括了商品的列表展示、商品详情页面、商品搜索、商品分类等功能的实现。它们通过与后端的接口进行数据交互,获取商品的相关信息,并展示给用户。在商品详情页面中,用户可以查看商品的详细信息,并进行加入购物车、立即购买等操作。 在谷粒商城前端的代码中,common和product两个模块的代码是相互独立的,但也可能会有一些交互和依赖关系。比如在product模块中使用了common模块提供的一些公共组件工具函数。这样可以有效地实现代码的模块化和复用,同时也提高了项目的开发效率和代码的可维护性。 总之,谷粒商城前端的common和product模块的代码分别负责处理整个项目的公共部分和商品相关的功能。通过模块化和复用的设计,可以更好地实现电商平台的功能需求,并提供良好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值