国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

一百行JS代碼實現一個校驗工具

2024-05-06 16:50:27
字體:
來源:轉載
供稿:網友

做過校驗需求的小伙伴們都知道,校驗其實是個麻煩事。

規則多,需要校驗的字段多,都給我們前端帶來巨大的工作量。

一個不小心,代碼里就出現了不少if else等不可維護的代碼。

因此,我覺得一個團隊或者是一個項目,需要一個校驗工具,簡化我們的工作。

首先,參考一下 Joi。只看這一小段代碼:

Joi.string().alphanum().min(3).max(30).required()

我希望我的校驗工具Coi也是鏈式調用,鏈式調用可以極大的簡化代碼。

校驗呢,其實主要就3個入參:需要校驗的數據,提示的錯誤信息,校驗規則。

哎 直接把代碼貼出來吧,反正就一百行,一目了然:

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    }    return this  }  // ulr校驗  isURL(message) {    if (!this.pass) return this    const urlReg = new RegExp(      '^(?!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    }    return this  }  // 自定義正則校驗  requireRegexp(reg, message) {    if (!this.pass) return this    if (!reg.test(this.input)) {      this.errorMessage = message      this.pass = false    }    return this  }}

使用姿勢如下:

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}

總結

以上所述是小編給大家介紹的一百行JS代碼實現一個校驗工具,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 察隅县| 娱乐| 徐闻县| 兴安盟| 罗定市| 四子王旗| 安国市| 云安县| 凤庆县| 肥乡县| 烟台市| 施甸县| 屏边| 肃宁县| 桓仁| 灵武市| 弥勒县| 赫章县| 黄梅县| 全椒县| 宣武区| 长阳| 锡林浩特市| 长春市| 佛冈县| 桦南县| 盐边县| 外汇| 乌拉特中旗| 明溪县| 石棉县| 会理县| 金阳县| 六安市| 高邑县| 镇远县| 平塘县| 元朗区| 江都市| 云阳县| 嵩明县|