zoukankan      html  css  js  c++  java
  • 一百行js代码实现一个验证工具

    export default class Coi {
        constructor(prop) {
            this.input = prop
            this.errorMessage = '通过校验' // 错误信息
            this.pass = true // 校验是否通过
        }
    
        // 数据输入
        data(input) {
            if (!this.pass) return this
    
            this.input = input
            return this
        }
    
        // 必填,不能为空
        isRequired(message) {
            if (!this.pass) return this
    
            if (
                /^s*$/g.test(this.input) ||
                this.input === null ||
                this.input === undefined
            ) {
                this.errorMessage = message
                this.pass = false
            }
            return this
        }
    
        // 最小长度
        minLength(length, message) {
            if (!this.pass) return this
    
            if (this.input.length < length) {
                this.errorMessage = message
                this.pass = false
            }
            return this
        }
    
        // 最大长度
        maxLength(length, message) {
            if (!this.pass) return this
    
            if (this.input.length > length) {
                this.errorMessage = message
                this.pass = false
            }
            return this
        }
    
        // 需要的格式 number: 数字, letter: 字母, chinese: 中文
        requireFormat(formatArray, message) {
            if (!this.pass) return this
            let formatMap = {
                number: 0,
                letter: 0,
                chinese: 0
            }
    
            Object.keys(formatMap).forEach(key => {
                if (formatArray.includes(key)) formatMap[key] = 1
            })
    
            let formatReg = new RegExp(
                `^[${formatMap.number ? '0-9' : ''}${
                    formatMap.letter ? 'a-zA-Z' : ''
                }${formatMap.chinese ? 'u4e00-u9fa5' : ''}]*$`
            )
    
            if (!formatReg.test(this.input)) {
                this.errorMessage = message
                this.pass = false
            }
            return this
        }
    
        // 邮箱校验
        isEmail(message) {
            if (!this.pass) return this
    
            const emailReg = /^[a-z0-9]+([._\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/if(!emailReg.test(this.input)){this.errorMessage = message
                this.pass=false}returnthis}// ulr校验
        isURL(message){if(!this.pass)returnthisconst urlReg =newRegExp('^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\S+(?::\S*)?@)?(?:(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[0-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))|localhost)(?::\d{2,5})?(?:(/|\?|#)[^\s]*)?$','i')if(!urlReg.test(this.input)){this.errorMessage = message
                this.pass=false}returnthis}// 自定义正则校验
        requireRegexp(reg, message){if(!this.pass)returnthisif(!reg.test(this.input)){this.errorMessage = message
                this.pass=false}returnthis}}

    使用姿势如下:

    import Coi from 'js-coi'
    
    const validCoi = new Coi()
    validCoi
        .data('1234')
        .isRequired('id不能为空')
        .minLength(3, 'id不能少于3位')
        .maxLength(5, 'id不能多于5位')
    
        .data('1234@qq.')
        .isRequired('邮箱不能为空')
        .isEmail('邮箱格式不正确')
    
        .data('http:dwd')
        .isRequired('url不能为空')
        .isUrl('url格式不正确')
    
    if (!validCoi.pass) {
        this.$message.error(validCoi.errorMessage)
        return
    }

    当然你只校验一个字段的话也可以这么使用:

    import Coi from 'js-coi'
    
    const idCoi = new Coi('1234')
    idCoi
        .isRequired('id不能为空')
        .minLength(3, 'id不能少于3位')
        .maxLength(5, 'id不能多于5位')
        .isEmail('id邮箱格式不正确')
        .isUrl('id格式不正确')
        .requireFormat(['number', 'letter', 'chinese'], 'id格式不正确')
        .requireRegexp(/012345/, 'id格式不正确')
    
    if (!idCoi.pass) {
        this.$message.error(idCoi.errorMessage)
        return
    }

     

  • 相关阅读:
    ARM处理器
    进程和线程通俗理解
    const与指针
    字符提取命令
    ThinkPHP之视图模版的使用
    ThinkPHP之MVC与URL访问
    ThinkPHP之项目搭建
    android之文件存储和读取
    cryptdb中wrapper.lua的分析
    cryptDB安装分析
  • 原文地址:https://www.cnblogs.com/dengtang/p/10942021.html
Copyright © 2011-2022 走看看