element-ui实现密码复杂度验证

这篇具有很好参考价值的文章主要介绍了element-ui实现密码复杂度验证。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、el-form中的rules属性,rules属性定义的是存放多个验证规则的数组formRules(这个数组是个人起的名字),el-form-item中的prop属性,对应的是formRules数组中的对应的规则名称,然后在el-input标签内,设置一个v-model双向数据绑定,以及其他的属性等。:model是绑定属性,置空

在规则对象数组(formRules)中,可以定义具体的规则包括如下:

     trigger: 'blur'(失去焦点触发验证)/'change'(实时触发校验规则),

     validator:自己加的较为复杂的验证的规则的名称,

     required:true(必填)/false(非必填)。

     message:不符合验证规则时候,向用户的提示信息。

     pattern: 用来验证正则的属性

2、在element ui表单中有rules属性,绑定相关验证规则

写在form表单总的标签上面 (el-form),不是写在子标签(el-form-item)里面  

<el-form ref="loginForm" :model="loginForm" :rules="loginRules">    

3、插入验证规则

     //插入
       loginRules: {
        username: [。。此处略去。。],
        password: [   
//在rule内可以插入多组数组来验证用户名、密码等,数组内可以插入多个对象,同时起作用      
          {
            required: true,
            trigger: "blur",
            message: "密码不能为空",
          },
          {
              //插入正则验证:大小写、数字、至少8位、不常用字符
            pattern:
              /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@#!%^*?&+-])[A-Za-z\d$@#!%^*?&+-]{8,}/,
            message: "密码应当至少8位且含有数字、大小写字母及特殊字符",
           },
                    
         
          //rule中插入比较复杂的验证方法
          { validator: checkPassword, trigger: "blur" },
        ],
        code: [。。此处略去。。]
      },

4、为新插入的较复杂的验证规则添加定义,此处的验证规则是密码不能出现键盘上的连续三个及三个以上字符

正常情况下验证规则写在element-ui官网给的例子所写的位置即可。但是我的写了没效果,写在export default前面,import  from后面才有效。

import。。。from。。。
此处略去

// 键盘三个连续字符(包括三个连续数字)的匹配(横向、大小写、shift)
//rule是验证规则;value是传过来的值;callback是针对不同结果返回函数的名称,内部书写的是返回的结果。
//回调函数callback()(返回callback的入参为空代表校验通过规则,返回含new Error(‘自定义提示’)入参代表校验不通过规则。)
//保证自定义校验规则的每个分支都调用了callback方法,否则会导致el-form组件的validate方法无法进入回调函数。

const checkPassword = (rule, value, callback) => {
  var s_1_1 = "`1234567890-=";
  var s_1_2 = "qwertyuiop[]\\";
  var s_1_3 = "asdfghjkl;'";
  var s_1_4 = "zxcvbnm,./";
  var s_2_1 = "`1234567890-=";
  var s_2_2 = "QWERTYUIOP[]\\";
  var s_2_3 = "ASDFGHJKL;'";
  var s_2_4 = "ZXCVBNM,./";
  var s_3_1 = "~!@#$%^&*()_+";
  var s_3_2 = "QWERTYUIOP{}|";
  var s_3_3 = 'ASDFGHJKL:"';
  var s_3_4 = "ZXCVBNM<>?";
  var boolean = true;

  for (var n = 0; n < value.length - 2; n++) {
    var char = value[n] + value[n + 1] + value[n + 2];
    if (
      s_1_1.indexOf(char) >= 0 ||
      s_1_2.indexOf(char) >= 0 ||
      s_1_3.indexOf(char) >= 0 ||
      s_1_4.indexOf(char) >= 0 ||
      s_2_1.indexOf(char) >= 0 ||
      s_2_2.indexOf(char) >= 0 ||
      s_2_3.indexOf(char) >= 0 ||
      s_2_4.indexOf(char) >= 0 ||
      s_3_1.indexOf(char) >= 0 ||
      s_3_2.indexOf(char) >= 0 ||
      s_3_3.indexOf(char) >= 0 ||
      s_3_4.indexOf(char) >= 0
    ) {
      boolean = false;
      break;
    }
  }
  console.log(boolean);
  if (boolean == true) {
    callback();
  }
  callback(new Error("密码中键盘顺序字符不得超过三个,请重新输入"));
};

export default {。。。。。。}

5、假如项目里面需要一种比较狗的需求:用admin管理员身份登录不需要验证复杂的验证规则或者其它规则,而非管理员用户登录需要使用这一套规则,那么使用以下代码设置一个筛选条件即可。

判断如果用户名是admin的话就不再执行该判断。
const confirm = (rule, value, ok) => {
    const regex4 =
  /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}/;
  if (regex4.test(value)) {
    return ok();
  } else if (loginForm.username != "admin" && regex4.test(value) == false) {
    ok(new Error("密码应该是数字、大小写字母、特殊字符的8位组合,请重新输入!"));
  }
};

假如有错误,还请大神雅正。文章来源地址https://www.toymoban.com/news/detail-465929.html

到了这里,关于element-ui实现密码复杂度验证的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【算法篇C++实现】算法的时间、空间复杂度

    ​ 算法(algorithm)是解决一系列问题的 清晰指令 ,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 ​ 简单来说,算法就是解决一个问题的具体方法和步骤。算法是 程序的灵魂。 ​ 算法中执行的任何计算步骤都可以分解为基本可执行的操作步,即每个

    2024年02月13日
    浏览(42)
  • 数据结构(Java实现)-集合与时间和空间复杂度

    什么是集合框架 Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。 什么是数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的 集合。 容器

    2024年02月12日
    浏览(43)
  • 数据结构:堆的实现与建堆时间复杂度分析

    目录 前言 一.堆的介绍 1.堆的本质 2.堆的分类 二.堆的实现(以小根堆为例) 1.关于二叉树的两组重要结论: 2.堆的物理存储结构框架(动态数组的简单构建) 3. 堆元素插入接口(以小根堆为例) 堆尾元素向上调整的算法接口: 4.堆元素插入接口测试 5.堆元素插入接口建堆的时间复杂

    2023年04月19日
    浏览(40)
  • 【数据结构】二叉树的顺序结构实现及时间复杂度计算(二)

    目录 一,二叉树的顺序结构实现         1,二叉树的顺序结构         2,堆的概念及结构         3,堆的接口实现 1,堆的创建 2,接口函数 3,初始化 4,销毁 5,是否增容 6,交换数据 7,堆向上调整算法 8,插入数据 9,删除数据 10,堆向下调整算法 11,打印数

    2024年02月09日
    浏览(37)
  • vue Element-Ui 简单实现输入框密码的显示与隐藏

    element-ui 简单实现密码输入框的显示与隐藏 只需要在输入框代码中添加 show-password ,然后在你输入密码时会自动出现眼睛图标,点击图标就可以显示和隐藏密码。 相关资料: element-ui 图标库: https://element.eleme.cn/#/zh-CN/component/icon

    2024年02月11日
    浏览(66)
  • 【算法】用c#实现计算方法中的经典降幂优化策略,减少计算复杂度

    对于给定的数组[x1,x2,x3,…,xn],计算幂的累积:x1^(x2^(x3^(…^xn))的最后一位(十进制)数字。 例如,对于数组[3,4,2],您的代码应该返回1,因为3^(4^2)=3^16=43046721。 结果的增长得快得令人难以置信。例如,9^(9^9)有超过3.69亿个数字。你计算的lastDigit必须有效

    2024年02月11日
    浏览(36)
  • 数据结构 --- 复杂度概念及计算讲解(时间复杂度,空间复杂度)

    今天没有sao话,今天认真学习 前言: 经常刷题的人都知道,我们在解决一道题时可能有多个解法,那么如何判断那个解法才是最优解呢? 我们通常从代码的两个方面进行判断:1.时间 2.空间。 –❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀

    2024年03月22日
    浏览(47)
  • 时间复杂度和空间复杂度

    时间复杂度和空间复杂度是用来评估算法性能的两个重要指标。 时间复杂度(Time Complexity)是衡量算法执行时间随输入规模增长而增长的度量。它表示了算法解决问题所需的时间量级。常见的时间复杂度有: 常数时间复杂度 O(1):无论输入规模的大小,算法的执行时间都是固

    2024年01月17日
    浏览(49)
  • 数据结构-初识复杂度以及如何计算时间复杂度和空间复杂度(详细)

    🌸🌸从今天开始将持续更新数据结构的相关知识点~ 🌸首先,从复杂度开始~ 什么是复杂度呢? 从字面来看就是说复杂的程度,我们需要具备一种工具可以评估某种算法(程序)的好坏,比如运行时间、占用空间等等。 复杂度具体体现在三个方面: 1.算法 2.数据规模 3.输入

    2024年01月16日
    浏览(50)
  • 堆的实现,画图和代码分析建堆,堆排序,时间复杂度以及TOP-K问题

    如果有一个关键码的集合K = {k 0 ,k 1 ,k 2 ,…,k n-1 },把它的所有元素按 完全二叉树 的顺序存储方式存储在一个一维数组中,并满足:k i =k 2*i+1 且 =k 2*i+2 (k i =k 2*i+1 且 =k 2*i+2 ) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包