首頁>技術>

驗證下面的資料

//等待驗證的資料let awitWerified = {    //必須填寫、必須是string型別、最小長度6位、最大長度10位    name:'123',    //必須填寫、必須是手機號    phone:'15211111198'}
編寫規則
let rules={    // 必填    required: function(value, errorMsg='不能為空') {        if(value === ''|| value == null) {            return errorMsg        }    },    // 最小值    min: function(value, length, errorMsg=`${value.length?'長度':''}不能小於${length}`){        let val = value.length || value        if(val < length) {            return errorMsg        }    },    // 最大值    max: function(value, length, errorMsg=`${value.length?'長度':''}不能大於${length}`){        let val = value.length || value        if(val > length) {            return errorMsg        }    },    // 手機號校驗    mobile:function(value, errorMsg=`手機號碼不正確`){        if(!/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[0-9])\d{8}$/.test(value)){            return errorMsg        }    },    // 字串型別    string:function(value, errorMsg='必須為字串型別') {        if(typeof value !== "string"){            return errorMsg        }    },}複製程式碼
實現核心類(21行)
class Validator {    rules={}    constructor(){        this.rules=rules    }    make(data,cheacks){         return Object.keys(cheacks).map(key=>{            let val = data[key]            let rules=cheacks[key].split('|')            return{                key:key,                fail:rules.map(rule=>{                    let arg = rule.split(":")                    let fnKey = arg.shift()                    arg.unshift(val)                    return this.rules[fnKey].apply(val,arg)                }).filter(val=>val?true:false)            }             }).filter(val=>val.fail.length>0?true:false)    }}
簡單呼叫
//等待驗證的資料let awitWerified = {    name:1,    phone:'15210328198'}//透過Validator的make方法let validatorError = new Validator().make(awitWerified, {    'name' : 'required|string|min:6|max:10',    'phone' : 'required|phone',});if (validatorError) {   console.log(validatorError)}
輸出如下

6
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Java高階知識註解&反射你忘了嗎?