正则表达式验证合集

news2025/1/20 16:25:17

1.定义封装的公共js

在src下定义一个util文件夹,并且定义个validate.js(当然你想取什么名字就什么名字哈哈哈哈)
在这里插入图片描述

2.上代码

//邮箱

/**
 * 邮箱
 * @param {*} s
 */
export function isEmail(s) {
  return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
}

//手机号码

/**
 * 手机号码
 * @param {*} s
 */
export function isMobile(s) {
  return /^1[0-9]{10}$/.test(s)
}

//电话号码

/**
 * 电话号码
 * @param {*} s
 */
export function isPhone(s) {
  return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
}

//URL地址

/**
 * URL地址
 * @param {*} s
 */
export function isURL(s) {
  return /^http[s]?:\/\/.*/.test(s)
}

///* 合法uri */

/* 合法uri */
export function validateURL(textval) {
  const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
  return urlregex.test(textval)
}

/* 小写字母 */

export function validateLowerCase(str) {
  const reg = /^[a-z]+$/
  return reg.test(str)
}

/* 大写字母 */

export function validateUpperCase(str) {
  const reg = /^[A-Z]+$/
  return reg.test(str)
}

/* 大小写字母 */

export function validatAlphabets(str) {
  const reg = /^[A-Za-z]+$/
  return reg.test(str)
}

/* 验证pad还是pc */

export const vaildatePc = function () {
  const userAgentInfo = navigator.userAgent
  const Agents = ['Android', 'iPhone',
    'SymbianOS', 'Windows Phone',
    'iPad', 'iPod'
  ]
  let flag = true
  for (var v = 0; v < Agents.length; v++) {
    if (userAgentInfo.indexOf(Agents[v]) > 0) {
      flag = false
      break
    }
  }
  return flag
}

/*** 判断身份证号码 */

export function cardid(code) {
  const list = []
  let result = true
  let msg = ''
  var city = {
    11: '北京',
    12: '天津',
    13: '河北',
    14: '山西',
    15: '内蒙古',
    21: '辽宁',
    22: '吉林',
    23: '黑龙江 ',
    31: '上海',
    32: '江苏',
    33: '浙江',
    34: '安徽',
    35: '福建',
    36: '江西',
    37: '山东',
    41: '河南',
    42: '湖北 ',
    43: '湖南',
    44: '广东',
    45: '广西',
    46: '海南',
    50: '重庆',
    51: '四川',
    52: '贵州',
    53: '云南',
    54: '西藏 ',
    61: '陕西',
    62: '甘肃',
    63: '青海',
    64: '宁夏',
    65: '新疆',
    71: '台湾',
    81: '香港',
    82: '澳门',
    91: '国外 '
  }
  if (!validatenull(code)) {
    if (code.length === 18) {
      if (!code || !/(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(code)) {
        msg = '证件号码格式错误'
      } else if (!city[code.substr(0, 2)]) {
        msg = '地址编码错误'
      } else {
        // 18位身份证需要验证最后一位校验位
        code = code.split('')
        // ∑(ai×Wi)(mod 11)
        // 加权因子
        var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
        // 校验位
        var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, 'x']
        var sum = 0
        var ai = 0
        var wi = 0
        for (var i = 0; i < 17; i++) {
          ai = code[i]
          wi = factor[i]
          sum += ai * wi
        }
        if (parity[sum % 11] !== code[17]) {
          msg = '证件号码校验位错误'
        } else {
          result = false
        }
      }
    } else {
      msg = '证件号码长度不为18位'
    }
  } else {
    msg = '证件号码不能为空'
  }
  list.push(result)
  list.push(msg)
  return list
}

/** * 判断手机号码是否正确 */

export function isvalidatemobile(phone) {
  const list = []
  let result = true
  let msg = ''
  var isPhone = /^0\d{2,3}-?\d{7,8}$/
  // 增加134 减少|1349[0-9]{7},增加181,增加145,增加17[678]
  if (!validatenull(phone)) {
    if (phone.length === 11) {
      if (isPhone.test(phone)) {
        msg = '手机号码格式不正确'
      } else {
        result = false
      }
    } else {
      msg = '手机号码长度不为11位'
    }
  } else {
    msg = '手机号码不能为空'
  }
  list.push(result)
  list.push(msg)
  return list
}

/**

  • 判断手机号码是否正确(可以为空)
    */
export function isValidateNoneMobile(phone) {
  const list = []
  let result = true
  let msg = ''
  var isPhone = /^0\d{2,3}-?\d{7,8}$/
  // 增加134 减少|1349[0-9]{7},增加181,增加145,增加17[678]
  if (!validatenull(phone)) {
    if (phone.length === 11) {
      if (isPhone.test(phone)) {
        msg = '手机号码格式不正确'
      } else {
        result = false
      }
    } else {
      msg = '手机号码长度不为11位'
    }
  } else {
    result = false
  }
  list.push(result)
  list.push(msg)
  return list
}

/**

  • 判断姓名是否正确
    */
export function validatename(name) {
  var regName = /^[\u4e00-\u9fa5]{2,4}$/
  if (!regName.test(name)) return false
  return true
}

/**

  • 判断是否为整数
    */
export function validatenum(num, type) {
  let regName = /[^\d.]/g
  if (type === 1) {
    if (!regName.test(num)) return false
  } else if (type === 2) {
    regName = /[^\d]/g
    if (!regName.test(num)) return false
  }
  return true
}

/**

  • 判断是否为小数
    */
export function validatenumord(num, type) {
  let regName = /[^\d.]/g
  if (type === 1) {
    if (!regName.test(num)) return false
  } else if (type === 2) {
    regName = /[^\d.]/g
    if (!regName.test(num)) return false
  }
  return true
}

/**

  • 判断是否为空
    */
export function validatenull(val) {
  if (typeof val === 'boolean') {
    return false
  }
  if (typeof val === 'number') {
    return false
  }
  if (val instanceof Array) {
    if (val.length === 0) return true
  } else if (val instanceof Object) {
    if (JSON.stringify(val) === '{}') return true
  } else {
    if (val === 'null' || val == null || val === 'undefined' || val === undefined || val === '') return true
    return false
  }
  return false
}

//请输入中文、英文、数字包括下划线

  validatorNameCn(rule, value, callback) {
    let acount = /^[\u4E00-\u9FA5A-Za-z0-9_]+$/
    if (value && (!(acount).test(value))) {
      callback(new Error('请输入中文、英文、数字包括下划线'))
    } else {
      callback()
    }
  },

//在这里插入代码片

  checkSpace(rule, value, callback) {
    let longrg = /[^\s]+$/;
    if(!longrg.test(value)){
      callback(new Error('请输入非空格信息'));
    } else {
      callback();
    }
  },

/**

  • 日期格式化
    */
export function dateFormat(date) {
  let format = 'yyyy-MM-dd hh:mm:ss'
  if (date !== 'Invalid Date') {
    var o = {
      'M+': date.getMonth() + 1, // month
      'd+': date.getDate(), // day
      'h+': date.getHours(), // hour
      'm+': date.getMinutes(), // minute
      's+': date.getSeconds(), // second
      'q+': Math.floor((date.getMonth() + 3) / 3), // quarter
      'S': date.getMilliseconds() // millisecond
    }
    if (/(y+)/.test(format)) {
      format = format.replace(RegExp.$1,
        (date.getFullYear() + '').substr(4 - RegExp.$1.length))
    }
    for (var k in o) {
      if (new RegExp('(' + k + ')').test(format)) {
        format = format.replace(RegExp.$1,
          RegExp.$1.length === 1 ? o[k]
            : ('00' + o[k]).substr(('' + o[k]).length))
      }
    }
    return format
  }
  return ''
}

3.使用方法

1.需要的页面引入该验证方法

import { isValidateNoneMobile } from "@/util/validate";

2.创建验证

 data () {
    const validatePhone = (rule, value, callback) => {
      if (isValidateNoneMobile(value)[0]) {
        callback(new Error(isValidateNoneMobile(value)[1]));
      } else {
        callback();
      }
    };

  },

3.在表单中添加验证

  data () {
    return {
      ruleForm: {
        phone: "",
      },
      rules: {
        phone: [{ required: false, validator: validatePhone, trigger: "blur" }],
      },
    };
  },

在这里插入图片描述
有遇到新的会持续更新…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于FPGA的 矩阵键盘按键识别 【原理+源码】

目录 引言 原理阐述 实现方法 源码分享 板级调试演示 引言 最近了解了矩阵键盘扫描的原理&#xff0c;动手实现了一下&#xff0c;在这里做一个简单的总结。 原理阐述 矩阵键盘典型电路&#xff1a; FPGA的应用电路&#xff1a; 其中&#xff0c;行信号为FPGA输入信号&a…

企业从哪里开始构建弹性 IT 基础架构

混合工作模式扩大了工作范围&#xff0c;增加了 IT 团队的负担&#xff0c;因为他们需要在面对增加的攻击面时保持弹性。入侵企业的 IT 基础架构只需要一个受损的身份。 什么是企业标识&#xff1f; 这些是用户名、密码、网络、端点、应用程序等&#xff0c;充当业务敏感信息…

CheatEngine教程-官方9关

文章目录第一步&#xff1a;环境准备&#xff0c;下载并安装CE第二关&#xff1a;精确扫描数值第三关&#xff1a;未知数值扫描第四关&#xff1a;浮点数的扫描第五关&#xff1a;代码替换功能第六关&#xff1a;关于指针第七关&#xff1a;简单代码注入第八关&#xff1a;查找…

力扣(LeetCode)173. 二叉搜索树迭代器(C++)

设计 根据二叉树的中序遍历的迭代解法&#xff0c;稍改代码&#xff0c;就是本题的解法。 初始化 : 传入了根结点&#xff0c;根据迭代思路&#xff0c;将结点的左链依次入栈。 nextnextnext : 栈顶结点就是所求。根据迭代思路&#xff0c;当前结点要变成栈顶结点的右儿子。由…

Openlayers:自定义坐标系

Openlayers天然支持EPSG:4326(WGS1984地理坐标系)、EPSG:3857(Web墨卡托投影坐标系,即:将WGS84坐标系投影到正方形,南北投影范围为[-85.051129,+85.051129])。同时,Openlayers也支持开发者自定义坐标系。那么具体如何操作呢? 相关的API ol.proj.projection ol.proj.…

Android设计模式详解之工厂方法模式

前言 工厂方式模式是创建型设计模式&#xff1b; 定义&#xff1a;定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪个类。 使用场景&#xff1a;在任何需要生成复杂对象的地方&#xff0c;都可以使用工厂方法模式。复杂对象适合使用工厂模式&#xff0c;用new就可…

【Java|golang】1753. 移除石子的最大得分

你正在玩一个单人游戏&#xff0c;面前放置着大小分别为 a​​​​​​、b 和 c​​​​​​ 的 三堆 石子。 每回合你都要从两个 不同的非空堆 中取出一颗石子&#xff0c;并在得分上加 1 分。当存在 两个或更多 的空堆时&#xff0c;游戏停止。 给你三个整数 a 、b 和 c &a…

攻防世界新手练习区——unseping

目录 知识点 解读题目源码&#xff1a; 命令绕过 知识点 PHP代码审计PHP序列化和反序列化PHP中魔术方法命令执行绕过方式 解读题目源码&#xff1a; 这道题首先一上来就是一段PHP代码&#xff0c;其中看到unserialize()就知道考的是反序列化&#xff0c;但是我们再往上看代码…

rust编程-struct结构体(chapter 5.1 结构体定义和实例化)

目录 1. 结构体定义和实例化 1.1 struct介绍 1.2 使用字段简写进行实例化 1.3 从其它对象实例化新结构体对象 1.4 使用无命名字段的struct类型 1.5 没有任何字段的structs结构体 1.6 结构体字段的值所有权 结构(struct)是一种自定义数据类型&#xff0c;可以将多个相关类…

存量时代下 用低代码开发平台提升你的CEM

随着人口及流量红利的逐步见顶&#xff0c;我国经济从增量市场迈入存量市场。在充分竞争的存量市场环境下&#xff0c;传统的初级竞争模式无法支撑产业的发展&#xff0c;相反还会让企业陷入持续烧钱的恶性循环中&#xff0c;获客难度的提升无疑加速了体验经济时代的到来&#…

modbus介绍、环境搭建测试与qt下串口/Tcp的demo工程测试

一、modbus的介绍 1.简介 Modbus是一种串行通信协议&#xff0c;于1979年为使用可编程逻辑控制器&#xff08;PLC&#xff09;通信而发表。Modbus已经成为工业领域通信协议的业界标准&#xff08;De facto&#xff09;&#xff0c;并且现在是工业电子设备之间常用的连接方式&a…

SSM框架项目实战-CRM(客户关系管理1)

目录​​​​​​​ 1 项目介绍 1.1 crm简介 1.2 业务流程 1.3 crm的技术架构 2 物理模型设计 2.1 crm表的结构 2.2 主键字段 2.2 外键字段 2.3 关于日期和时间的字段 3 搭建项目环境 3.1 添加maven依赖 3.2 添加配置文件 3.3 添加页面和静态资源 ​编辑 4 首页…

超标量处理器设计——第九章_执行

参考《超标量处理器》姚永斌著 文章目录超标量处理器设计——第九章_执行9.1 概述9.2 FU类型9.2.1 ALU9.2.2 AGU9.2.3 BRU条件码分支正确性检查9.3 旁路网络9.3.1 简单设计的旁路网络9.3.2 复杂设计的旁路网络9.4 操作数的选择9.5 Cluster9.5.1 Cluster IQ9.5.2 Cluster Bypass…

Python 自动化测试(四):数据驱动

在实际的测试工作中&#xff0c;通常需要对多组不同的输入数据&#xff0c;进行同样的测试操作步骤&#xff0c;以验证我们的软件质量。这种测试&#xff0c;在功能测试中非常耗费人力物力&#xff0c;但是在自动化中&#xff0c;却比较好实现&#xff0c;只要实现了测试操作步…

前端基础_fillStyle和strokeStyle属性

fillStyle和strokeStyle属性 在前面的章节&#xff0c;在绘制图形时只用到默认的线条和填充样式。而在本节中将会探讨canvas全部的可选项&#xff0c;来绘制出更加吸引人的内容。如果想要给图形上色&#xff0c;有两个重要的属性可以做到&#xff1a;fillStyle和strokeStyle。…

社科院与杜兰大学金融管理硕士12门课程简介,其中有你心心念念的课程吗

当我们考量一个项目是否符合自身时&#xff0c;首先对课程设置是有要求的&#xff0c;课程设置是一个项目的灵魂所在&#xff0c;优质的课程与强大的师资更能体现项目的与众不同&#xff0c;下面一起去了解社科院与杜兰大学金融管理硕士项目12门必修课程概要&#xff0c;看看其…

【Java】java | maven | nexus私服 | maven私服 | docker安装nexus私服

一、说明 1、centos 7 2、docker 3、idea的maven项目 二、安装 1、拉取镜像 docker pull sonatype/nexus3:latest 2、创建映射目录并授权 mkdir /home/nexus/nexus-data && chown -R 200 /home/nexus/nexus-data 3、启动镜像 docker run -d -p 8081:8081 -p 8082:8082…

antd+vue——实现按钮始终固定在顶部,且根据权限的不同控制按钮组件的显示与隐藏——技能提升

最近在写后台管理系统&#xff0c;遇到一个小功能&#xff0c;就是一个按钮组件集合。 之前写过一篇文章&#xff0c;是关于按钮集合固定到页面顶部的文章。vue——实现页面滚动时&#xff0c;dom固定在顶部——基础积累 原理就是&#xff1a;监听页面的滚动&#xff0c;如果…

QT Qmake OpenGL osg笔记

文章目录概述QT修改样式qmake概述库引用和库路径指定QT创建动态库和使用小例子写动态库用动态库参考资料附录概述 需要先安装osg&#xff0c;然后再编译安装osgQOpenGL的插件。 其中&#xff0c;osgQOpenGL是OSG嵌入到qt中的一种实现方式&#xff0c;换言之&#xff0c;能够支…

AMBA、AHB、APB、AXI总线介绍及对比

link 一、AMBA概述AMBA (Advanced Microcontroller Bus Architecture) 高级微处理器总线架构定义了高性能嵌入式微控制器的通信标准&#xff0c;可以将RISC处理器&#xff08;精简指令集处理器&#xff09;集成在其他IP芯核和外设中&#xff0c;它是有效连接IP核的“数字胶”&a…