当前位置: 首页 > news >正文

前端实习校验函数汇总(未完成)

实习简单总结

  • 1. 校验函数
      • (1) IPv4
      • (2) IPV6
      • (3) DNS校验(要么是IPV4要么是IPV6)
      • (3) 校验码
      • (4) 端口号校验
      • (5) 中英文数字及特殊字符限制最大长度
      • (6) 校验带小数点的百分比
      • (7) 校验手机号
      • (8) ※可以按照密码强度需求修改的校验
  • 2. 前端定时任务

1. 校验函数

(1) IPv4

/*** 校验IPv4* @param ipAddress ip地址*/
function isValidIPv4(_rules: Object, value: string, callback: Function): boolean {// IPv4地址的正则表达式const ipv4Pattern = /^(\d{1,3}\.){3}\d{1,3}$/;// 首先检查是否符合基本的格式if (!ipv4Pattern.test(value)) {callback('IP格式不对');}// 分割成四个部分const parts = value.split('.');// 检查每个部分是否在0到255之间for (let part of parts) {const num = parseInt(part, 10);if (num < 0 || num > 255) {callback('IP格式不对');}}callback();
}

补充一下ipv4的正则

const ipv4 =/^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))|\*)((\/([012]\d|3[012]|\d))?)(,((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))|\*)((\/([012]\d|3[012]|\d))?))*$/;

(2) IPV6

/*** 是否合法IPv6地址* @param value* @param callback*/const ipv6 =/^([\da-fA-F]{1,4}:){6}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^::([\da-fA-F]{1,4}:){0,4}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:):([\da-fA-F]{1,4}:){0,3}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){2}:([\da-fA-F]{1,4}:){0,2}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){3}:([\da-fA-F]{1,4}:){0,1}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){4}:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^:((:[\da-fA-F]{1,4}){1,6}|:)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^[\da-fA-F]{1,4}:((:[\da-fA-F]{1,4}){1,5}|:)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){2}((:[\da-fA-F]{1,4}){1,4}|:)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){3}((:[\da-fA-F]{1,4}){1,3}|:)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){4}((:[\da-fA-F]{1,4}){1,2}|:)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){5}:([\da-fA-F]{1,4})?(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){6}:(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$/;function validateIpv6(rule: any, value: any, callback: any) {if (value === '' || typeof value === 'undefined' || value == null) {// callback(new Error('请输入IP地址'));callback(); //非必须参数}let iparr = String(value).trim().split(',');// console.log(iparr);//判断ipv6let ip6 = !ipv6.test(iparr[0]);if (ip6) {callback(new Error('请输入正确的IP格式'));}callback();
}

(3) DNS校验(要么是IPV4要么是IPV6)

const ipv4 =/^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))|\*)((\/([012]\d|3[012]|\d))?)(,((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))|\*)((\/([012]\d|3[012]|\d))?))*$/;
const ipv6 =/^([\da-fA-F]{1,4}:){6}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^::([\da-fA-F]{1,4}:){0,4}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:):([\da-fA-F]{1,4}:){0,3}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){2}:([\da-fA-F]{1,4}:){0,2}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){3}:([\da-fA-F]{1,4}:){0,1}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){4}:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^:((:[\da-fA-F]{1,4}){1,6}|:)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^[\da-fA-F]{1,4}:((:[\da-fA-F]{1,4}){1,5}|:)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){2}((:[\da-fA-F]{1,4}){1,4}|:)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){3}((:[\da-fA-F]{1,4}){1,3}|:)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){4}((:[\da-fA-F]{1,4}){1,2}|:)(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){5}:([\da-fA-F]{1,4})?(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$|^([\da-fA-F]{1,4}:){6}:(\/([1-9]?\d|(1([0-1]\d|2[0-8]))))?$/;
/*** dns校验* @param rule* @param value* @param callback*/
function validateDNSIP(rule: any, value: any, callback: any) {if (value === '' || typeof value === 'undefined' || value == null) {// callback(new Error('请输入IP地址'));callback(); //非必须参数}let iparr = String(value).trim().split(',');// console.log(iparr);let ip6 = ipv6.test(iparr[0]);let ip4 = ipv4.test(iparr[0]);if (ip6 || ip4) {callback();}callback(new Error('请输入正确的IP格式'));
}

(3) 校验码

/***  校验验证码,必须6位数字*/
export const validateCode = (_rules: Object, value: string, callback: Function) => {const reg = /^[0-9]\d{5}$/;if (value === '') {callback('请输入验证码');} else if (reg.test(value)) {callback();} else {callback(new Error('验证码为6位数字'));}
};

(4) 端口号校验

function validatePort(_rules: Object, value: string, callback: Function) {if (/^[1-9][0-9]*$/.test(value) && parseInt(value, 10) <= 65535) {callback();} else {callback('请输入正确的端口格式');}
}

(5) 中英文数字及特殊字符限制最大长度

/*** 中英文数字及特殊字符,最多64字符* @param _rules* @param value* @param callback*/
function validateThreatName(_rules: Object, value: string, callback: Function): boolean {// 定义正则表达式,匹配中英文字符、数字和特殊字符const regex = /^[\u4e00-\u9fa5a-zA-Z0-9_-]{1,64}$/;// 使用正则表达式测试输入字符串if (regex.test(value)) {callback();} else {callback('威胁名称支持中英文数字及特殊字符_-,最多64字符');}
}

(6) 校验带小数点的百分比

/*** 校验百分比,允许小数后4位* @param input 输入*/
const validateNumber = (input: any) => {// 检查输入是否以 0 开头(排除 0 本身)if (/^0[0-9]+$/.test(input)) {return false;}// 将输入转换为数字const number = parseFloat(input);// 检查是否为有效数字if (isNaN(number)) {return false;}// 检查是否在1到100之间if (number < 1 || number > 100) {return false;}// 检查小数部分是否超过4位const decimalPart = (input.toString().split('.')[1] || '').length;if (decimalPart > 4) {return false;}// 如果所有条件都满足,返回truereturn true;
};

(7) 校验手机号

/***  校验手机号*/
export const validatePhoneNumber = (_rules: Object, value: string, callback: Function) => {const reg = /^(((13[0-9]{1})|(15[0-9]{1})|(16[0-9]{1})|(17[3-8]{1})|(18[0-9]{1})|(19[0-9]{1})|(14[5-7]{1}))+\d{8})$/;if (value === '') {callback('请输入手机号码');} else if (reg.test(value)) {callback();} else {callback(new Error('请输入正确的手机号码'));}
};

(8) ※可以按照密码强度需求修改的校验

登录密码强度要求:(1:小写字母;2:大写字母;3:数字;4:特殊字符)
passWordsStrength.strength中是列表[], [1,3]表示密码必须包含小写字母和数字

校验函数如下

/*** "codeDesc": "登录密码强度要求:(1:小写字母;2:大写字母;3:数字;4:特殊字符)"* 密码校验*/
const validatePassword = (_rules: Object, value: string, callback: Function) => {if (value.indexOf(' ') != -1) {callback('密码不能包含空格');}let passWordType = 0; //用1111 4个bt位表示密码类型for (let num of passWordsStrength.strength) {if (num == 1) {passWordType = passWordType | 1;}if (num == 2) {passWordType = passWordType | 2;}if (num == 3) {passWordType = passWordType | 4;}if (num == 4) {passWordType = passWordType | 8;}}let passWordLength = passWordsStrength.length; //密码最小长度是系统设置的最大长度写死为20if (value.length < passWordLength || value.length > 20) {callback(tips.value);}if (!containsLowerCase(value) && passWordType & 1) {callback('密码必须包含小写字母');}if (!containsUpperCase(value) && passWordType & 2) {callback('密码必须包含大写字母');}if (!containsNumber(value) && passWordType & 4) {callback('密码必须包含数字');}if (!containsSpecialCharacter(value) && passWordType & 8) {callback('密码必须包特殊字符');} else {callback();}
};const containsLowerCase = (str: string): boolean => {// 使用正则表达式检查字符串是否包含小写字母return /[a-z]/.test(str);
};function containsUpperCase(str: string): boolean {// 使用正则表达式检查字符串是否包含大写字母return /[A-Z]/.test(str);
}function containsNumber(str: string): boolean {// 使用正则表达式检查字符串是否包含数字return /\d/.test(str);
}function containsSpecialCharacter(str: string): boolean {// 定义允许的特殊字符// const specialCharacters = /[!@#$%^&*()]/;const specialCharacters = /[!@#$%^&*()\-_=+|{}$$:;'<>,.?]/;// 使用正则表达式检查字符串是否包含至少一个特殊字符return specialCharacters.test(str);
}

由于不同的密码强度,提示也不一样,所以需要针对密码类型计算提示

const getTips = () => {let passWordType = 0; //用1111 4个bt位表示密码类型for (let num of passWordsStrength.strength) {if (num == 1) {passWordType = passWordType | 1;}if (num == 2) {passWordType = passWordType | 2;}if (num == 3) {passWordType = passWordType | 4;}if (num == 4) {passWordType = passWordType | 8;}}let passWordLength = passWordsStrength.length;tips.value ='密码必须包含' +((passWordType & 0b11) === 0b11 ? '大小写字母' : (passWordType & 0b1 ? '小写字母' : '') + (passWordType & 2 ? '大写字母' : '')) +(passWordType & 0b1100 && passWordType & 0b0011 ? '、' : '') +(passWordType & 4 ? '数字' : '') +(passWordType & 0b1000 && passWordType & 0b0111 ? '、' : '') +(passWordType & 8 ? '特殊字符' : '') +'且长度为' +passWordLength +'~20位';
};

2. 前端定时任务

const onMountedLoad = async () => {//需要定时执行的任务Promise.all([getAlarmType(), getAlarmInfo(), getGeo(), getThreadPerceptTotal(), getList()]);
};let timeoutID: number | undefined = undefined;// 定时任务
const onTimeRefresh = () => {console.log('调用');let timeMargion = 1000 * 60 * autoRefreshTime.value;console.log(timeMargion);timeoutID = setTimeout(function () {onMountedLoad().then().finally(onTimeRefresh);}, timeMargion);
};
http://www.xdnf.cn/news/982981.html

相关文章:

  • 【2025最新版】Node.js详细安装配置教程(Windows系统)附安装包
  • 【第一章:人工智能基础】02.数据处理及可视化-(3)可视化工具与技术
  • 详细解释aruco::markdetection _detectInitialCandidates函数
  • wxWidgets常见辅助类的应用示例
  • 智能制造——解读86页敏捷制造业务模型设计方案【附全文阅读】
  • 【Lua热更新知识】学习一 Lua语法学习
  • Unity Android 启动应用的时候黑屏问题
  • 嵌入式学习笔记DAY36(事务、网页制作、HTTP协议)
  • Linux日志分割压缩实战指南
  • Spring Boot 中ConditionalOnClass、ConditionalOnMissingBean 注解详解
  • java基础学习(二十五)
  • STM32单片机独立看门狗IWDG使用CubeMX配置方法
  • 认识RNN-循环神经网络
  • Java中读取YAML文件配置信息
  • vxetable框架在前端开发大数据量界面展示是很友好的
  • 室内腔体耦合器
  • 馈线与馈线连接器详解
  • 几个常见远程工作平台
  • vue项目 报错 error ‘xxx‘ is assigned a value but never used
  • Context7 Mcp Quickstart
  • 《Qt安卓编程:开启跨平台移动开发新时代》
  • arm服务器运行Jmeter报错问题UseG1GC
  • 微服务架构中的 Kafka:异步通信与服务解耦(二)
  • 探索偏微分方程数值解法的领域-AI云计算
  • 复习日!!
  • 2025年Typescript最新高频面试题及核心解析
  • AI应用开发---全套技术+落地方向
  • 论文笔记 - 《Implementing block-sparse matrix multiplication kernels using Triton》
  • C++ 通过AES-NI指令集高级硬件加速实现AES-128-CFB算法。
  • c++ std::invoke