uniapp、vue、小程序常用的一些验证规则校验方法(例如:手机号。身份证、金额等)

例如: 检查是否为空数组 、是否是空  不为空false 为空true、校验密码、校验手机号格式、校验邮箱格式、校验身份证号格式、校验值长度 不少于6位数、 电话号码加密   15288889999 转化为 152****9999、身份证号码加密、验证输入重量、金额等类型   例如 0.11  2.23  100.123等等 、验证输入的钱    单纯验证金额类型 、验证是否是纯数值 、处理数据 :可把制定相同的key值得对象存储到下级得children中、生成唯一ID、数字转中文  运行结果 : 1 转为 一、图片转为base64、获取随机字符串、授权微信小程序消息推送。

新建utils.js文件

/*** 通用的数据处理和验证类 1、在main.js中配置下列代码import Utils from '@/utils/utils.js';Vue.prototype.$Utils = Utils;2、使用方式let str = "0";if(this.$Utils.isNull(str)){console.log("str 是空")}*/
export default class Utils {/*** 检查是否为空数组 空数组返回 true* @param {Array} arr 数组* @return Boolean*/static isEmptyArr(arr) {if (!Array.isArray(arr)) throw new Error('isEmptyArr 参数不是一个数组');if (!arr.length) return true;return false;}/*** 是否是空  不为空false 为空true* @param {any} opt 验证参数* @return Boolean*/static isNull(opt) {if (opt == '' || opt == null || opt == 'null' || opt == undefined) return true;return false;}/*** 校验密码* @param phone* @returns {boolean}*/static checkPassword(phone) {let reg = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/;return reg.test(phone);}/*** 校验手机号格式* @param phone* @returns {boolean}*/static checkPhone(phone) {let reg = /^1[3456789]\d{9}$/;return reg.test(phone);}/*** 校验邮箱格式* @param email* @returns {boolean}*/static checkEmail(email) {let reg = /^\w+@[a-z0-9]+\.[a-z]{2,4}$/;return reg.test(email);}/*** 校验身份证号格式* @param email* @returns {boolean}*/static checkCardNo(email) {let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;return reg.test(email);}/*** 校验值长度 不少于6位数* @param email* @returns {boolean}*/static checkValueLength(password, min = 6, max = 0) {let regExp = new RegExp(`^[\\s\\S]{${min || ''},${max || ''}}$`);return regExp.test(password);}/*** 电话号码加密   15288889999 转化为 152****9999*/static phoneEncryption(phone = "") {return phone.replace(/^(\d{3})\d{4}(\d+)/, '$1****$2')}/*** 身份证号码加密*/static idCardEncryption(idCard) {if (!idCard) return ""let reg = /^(.{6})(?:\d+)(.{4})$/let result = idCard.replace(reg, '\$1******\$2') // 身份证号脱敏,将中间8位替换为“*”return result}/**验证输入重量、金额等类型   例如 0.11  2.23  100.123等等   * @param {Object} value*/static checkMoney(value, len = 6) {let reg = /\d{1,}\.{0,1}\d{0,2}/;if (value.replace(reg, '')) {value = (value.match(reg) == null ? '' : value.match(reg));}if ((value >= 1) && (`${value}`.indexOf(0) == 0)) {value = parseFloat(value);}if (`${value}`.indexOf('00') == 0) {value = 0;}let str = parseInt(value).toString();if (str.length >= len && (value.toString().indexOf('.') < 0)) {value = parseFloat(str.slice(0, len));}return value;}/**验证输入的钱    单纯验证金额类型 * @param {Object} value*/static isMoney(value) {var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;if (reg.test(value)) {return true;} else {return false;};}// 验证是否是纯数值   static isNumber(value) {var reg = /^[0-9]*[1-9][0-9]*$/;if (reg.test(value)) {return true;} else {return false;};}/*** 处理数据 :可把制定相同的key值得对象存储到下级得children中*/static mergeData(list = [], key, name = 'children') {const data = [];list.forEach((item, index) => {const parent = data.find((i) => i[key] === item[key]);if (parent) {parent[name].push({...item});} else {let obj = {...item};if (!obj[name]) {obj[name] = [];}obj[name].push({...item});data.push(obj);}});return data;}// 表单验证   static validateForm(key, rules) {var check = truerules[key].forEach((v) => {// 验证失败if (!(v.rule).test(this[key])) {uni.showToast({title: v.msg,icon: 'none'});check = falsereturn false}})return check};// uniapp 获取到上一页的信息,    适用:添加、编辑数据的时候,刷新上一页列表的数据  static beforePage(num = 1) {// 当前页的数据,let pages = getCurrentPages();// 上一页的数据let prevPage = pages[pages.length - (num + 1)];return prevPage.$vm;};//生成唯一ID  :  根据当前系统时间随机生成一个长字符串static getID() {const now = new Date()const year = now.getFullYear();let month = now.getMonth() + 1;let day = now.getDate();let hour = now.getHours();let minutes = now.getMinutes();let seconds = now.getSeconds();month = month < 10 ? '0' + month : month;day = day < 10 ? '0' + day : day;hour = hour < 10 ? '0' + hour : hour;minutes = minutes < 10 ? '0' + minutes : minutes;seconds = seconds < 10 ? '0' + seconds : seconds;const yyyyMMddHHmmss = `${year}${month}${day}${hour}${minutes}${seconds}`;const rand = Math.random().toString(10).substr(2, 10);return `${yyyyMMddHHmmss}${rand}`;};//数字转中文  运行结果 : 1 转为 一static toChinesNum(num) {let changeNum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']let unit = ['', '十', '百', '千', '万']num = parseInt(num)let getWan = (temp) => {let strArr = temp.toString().split('').reverse()let newNum = ''let newArr = []strArr.forEach((item, index) => {newArr.unshift(item === '0' ? changeNum[item] : changeNum[item] + unit[index])})let numArr = []newArr.forEach((m, n) => {if (m !== '零') numArr.push(n)})if (newArr.length > 1) {newArr.forEach((m, n) => {if (newArr[newArr.length - 1] === '零') {if (n <= numArr[numArr.length - 1]) {newNum += m}} else {newNum += m}})} else {newNum = newArr[0]}return newNum}let overWan = Math.floor(num / 10000)let noWan = num % 10000if (noWan.toString().length < 4) {noWan = '0' + noWan}return overWan ? getWan(overWan) + '万' + getWan(noWan) : getWan(num)};// 图片转为base64static getBase64Image = (url, callback) => {// #ifdef MP-WEIXINuni.getFileSystemManager().readFile({filePath: url, //选择图片返回的相对路径encoding: 'base64', //编码格式success: res => { //成功的回调console.log(res, '返回结果');let base64 = 'data:image/jpeg;base64,' + res.data //不加上这串字符,在页面无法显示的哦callback && callback(base64)},fail: (e) => {console.log("图片转换失败");}})// #endif// #ifdef H5uni.request({url: url,method: 'GET',responseType: 'arraybuffer',success: res => {let base64 = uni.arrayBufferToBase64(res.data); //把arraybuffer转成base64base64 = 'data:image/jpeg;base64,' + base64;callback && callback(base64)},fail: (e) => {console.log("图片转换失败");}})// #endif// #ifdef APP-PLUSplus.io.resolveLocalFileSystemURL(url, (entry) => {entry.file((file) => {let fileReader = new plus.io.FileReader();fileReader.onloadend = (e) => {callback && callback(e.target.result)};fileReader.readAsDataURL(file);})})// #endif};// 获取随机字符串static generateRandomString(length = 32) {const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';let result = '';for (let i = 0; i < length; i++) {result += characters.charAt(Math.floor(Math.random() * characters.length));}return result;};// 授权微信小程序消息推送static authAppletInfoPush(tmplIdsArr = [], callback) {uni.requestSubscribeMessage({provider: 'weixin',tmplIds: tmplIdsArr,success: function(res) {console.log('success', res)},fail: function() {console.log('fail', res)},complete: function(res) {console.log('complete', res)if (callback) callback(res)}})}
}

直接使用方法:

1、在main.js中配置下列代码import Utils from '@/utils/utils.js';Vue.prototype.$Utils = Utils;2、使用方式let str = "0";if(this.$Utils.isNull(str)){console.log("str 是空")}

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

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

相关文章

RT-Thread 线程间通信 信号

信号 信号&#xff08;又称为软中断信号&#xff09;&#xff0c;在软件层次上是对中断机制的一种模拟&#xff0c;在原理上&#xff0c;一个线程收到一个信号与处理器收到一个中断请求可以说是类似的。 信号的工作机制 信号在RT-Thread中用作异步通信&#xff0c;POSIX标准…

MES系统数据采集的几种方式

生产制造执行MES系统具有能够帮助企业实现生产数据收集与分析、生产计划管理、生产过程监控等的功能板块&#xff0c;在这里小编就不一一介绍了&#xff0c;主要讲讲它的数据采集功能板块&#xff0c;可以说&#xff0c;数据采集是该系统进行数据统计与生产管理等后续工作的基础…

SpringBoot默认配置文件

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot默认配置文件 📚个人知识库: Leo知识库,欢迎大家访问 1.前言☕…

【每日一题】2696. 删除子串后的字符串最小长度-2024.1.10

题目&#xff1a; 2696. 删除子串后的字符串最小长度 给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作&#xff0c;在每一步操作中&#xff0c;你可以从 s 中删除 任一个 "AB" 或 "CD" 子字符串。 通过执行操作&#xff0c…

如何在数学建模竞赛中稳定拿奖

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

Windows 10 Manager v3.9.0.0

软件介绍 Windows 10 Manager&#xff0c;Win10优化软件&#xff0c;香港Yamicsoft 公司开发的集微软Windows10的所有功能于一身的系统优化软件&#xff0c;包含40多个实用程序来优化&#xff0c;调整&#xff0c;清理&#xff0c;加速和修复Windows 10&#xff0c;可以让系统…

函数指针和回调函数

文章目录 一.函数指针1.什么是函数指针2.函数指针的形式3.函数指针的用途。1.调用函数2.作为参数进行传递 二.函数指针数组三.回调函数 一.函数指针 1.什么是函数指针 函数指针是指向函数的指针。在C语言和C中&#xff0c;函数指针可以用来存储函数的地址&#xff0c;并且可以…

【操作系统】优化MBR程序:让MBR调用显存吧

一.显存、显卡以及显示器的概述 显卡用于连接CPU和显示器&#xff0c;我们调用显示器时&#xff0c;其实就是利用显卡提供的IO接口间接地对显示器进行操作&#xff0c;所以显卡也称之为显示适配器。接下来我们将优化之前写的MBR程序&#xff08;参考&#xff1a;【操作系统】BI…

学习python仅收藏此一篇就够了(集合,字典)

集合 集合的定义&#xff1a; 变量名称 {元素&#xff0c;元素} 变量名称 set() 首先&#xff0c;因为集合是无序的&#xff0c;所以集合不支持&#xff0c;下标索引访问。 但是集合和列表一样&#xff0c;是允许修改的。 #定义一个集合 my_set {"python", …

经管类CSSCI、北核期刊投稿指南数据(2023年更新)/经管类的期刊投稿指南

经管类CSSCI、北核期刊投稿指南&#xff08;2023年更新&#xff09; 1、内容包括&#xff1a;投稿指南-CSSCI版本、CSSCI扩展版本、北大核刊版本、建议期刊版本、所有期刊。 2、范围&#xff1a;CSSCI、CSSCI扩展、北大核刊 3、说明&#xff1a;包含经管类期刊的发表难度&am…

【LeetCode】2626. 数组归约运算

数组归约运算 题目题解 题目 给定一个整数数组 nums、一个 reducer 函数 fn 和一个初始值 init&#xff0c;返回通过依次对数组的每个元素执行 fn 函数得到的最终结果。 通过以下操作实现这个结果&#xff1a;val fn(init, nums[0])&#xff0c;val fn(val, nums[1])&#…

1. Presto基础

该笔记来源于网络&#xff0c;仅用于搜索学习&#xff0c;不保证所有内容正确。文章目录 一、presto基础操作二、时间函数0、当前日期/当前时间1、转时间戳1&#xff09;字符串转时间戳 &#xff08;推荐&#xff09;2&#xff09;按照format指定的格式&#xff0c;将字符串str…

AlexNet论文翻译与精读

1:该论文解决了什么问题&#xff1f; 图像分类问题 2&#xff1a;该论文的创新点&#xff1f; 1:使用了大的深的卷积神经网络进行图像分类&#xff1b; 2:采用了两块GPU进行分布式训练&#xff1b; 3:采用了Relu进行训练加速&#xff1b; 4:采用局部归一化提高模型泛化能…

Mac iTerm2 配置

Mac iTerm2 配置 安装 brew install iTerm2安装完成之后&#xff0c;需要重新打开终端&#xff0c;既可以看见安装 iTerm2 的效果。 iTerm2 美化 使用 oh-my-zsh 美化 iTerm2 终端 安装 brew install wget sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/mast…

Laravel使用Kafka实践教程(从安装到使用0-1)

一、Linux安装Kafka 首先Linux服务器需要安装好Kafka,这里不再具体细说&#xff0c;可以看我前面的文章&#xff1a;Linux搭建Kafka详细一步一步指南(linux启动kafka脚本)-CSDN博客 二、Laravel安装Kafka composer require enqueue/rdkafka:0.10.18注意&#xff1a;版本号一…

Qt 窗口阴影边框

环境&#xff1a;Qt 5.15 VS2019 方法一&#xff1a;QGraphicsDropShadowEffect 实现方法参考链接&#xff1a;https://blog.csdn.net/goforwardtostep/article/details/99549750 使用此方法添加窗口阴影&#xff0c;会出现警告信息&#xff1a; 且窗口最大化与还原切换时会…

多态、抽象类和接口(深拷贝和浅拷贝)

目录​​​​​​​ 前言&#xff1a; 多态&#xff1a; 多态的定义&#xff1a; 向上转型&#xff1a; 方法重写&#xff1a; 再看toString方法&#xff1a; 动态绑定&#xff1a; 向下转型&#xff1a; 小练习&#xff1a; 抽象类&#xff1a; 什么是抽象类&am…

Logstash应用-同步ES(elasticsearch)到HDFS

1.场景分析 现有需求需要将elasticsearch的备份至hdfs存储&#xff0c;根据以上需求&#xff0c;使用logstash按照天级别进行数据的同步 2.重难点 数据采集存在时间漂移问题&#xff0c;数据保存时使用的是采集时间而不是数据生成时间采用webhdfs无法对文件大小进行设置解决…

水产冷链物流行业零下25℃库架一体 海格里斯HEGERLS四向穿梭式冷藏冷库智能密集仓

随着国内外仓储物流整体规模和低温产品消费需求的稳步增长&#xff0c;冷链市场应用潜力不断释放。在传统“货架叉车”的方式下&#xff0c;货物、人员及机械设备不断进出&#xff0c;容易造成温度波动&#xff0c;导致冷量流失。立体冷库则以更高密度、更具成本效益的方式&…

性能测试中TPS上不去的几种原因浅析

昨晚在某个测试群看到有人问了一个问题&#xff1a;压力测试中TPS一直上不去&#xff0c;是什么原因&#xff1f;稍微整理了下思路&#xff0c;列举性的简略回答了他的问题。 这篇博客&#xff0c;就具体说说在实际压力测试中&#xff0c;为什么有时候TPS上不去的原因。如有遗…