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

JavaScript:表单及正则表达式验证

今天我要介绍的是在JavaScript中关于表单验证内容的知识点介绍:

关于表单验证,我接下来则直接将内容以及效果显示出来并作注解,这样可以清晰看见这个表达验证的妙用:

<form id="ff" action="https://www.baidu.com"><h1>用户登录</h1>账号:<input type="text" id="zh" /> <span></span> <br />密码:<input type="password" id="mm" /><span></span> <br /><Button>登录</Button></form>

效果:

       注:可以看到这是一个非常经典的登录界面的制作,下面我会逐一介绍他们内部的方法使用以及代码显示的效果;

onclick: 点击事件   //ondblclick: 双击事件 // onsubmit: 表单提交事件 // onblur: 失去焦点事件 // onfocus: 获取焦点事件。

注: 这是事件点击使用的方法代码;

表单提交的代码演示:

document.getElementById('ff(自定义)').onsubmit = function() {console.log('触发了onsubmit');// 获取表单中的账号和密码let zh = document.getElementById("zh").value;let mm = document.getElementById("mm").value;// 判断账号及密码是否为空if (zh.length == 0 || mm.length == 0) {alert('请输入正确的账号或密码')// 自定义弹出框document.querySelector('.mask').style.display = "block";return false;}// 以下结果为true 表允许表单提//交到指定页面,反之则不能,且只能实现所输入的结果return true;}

 注{  return false  }为阻止表单提交,但如果整体代码无错,{ return true }则通过,提交表单。

效果:

 

账号和密码获取/失去焦点演示:

         // 账号获取焦点事件document.getElementById('zh').onfocus = function() {// let = zh = this.value;this.nextElementSibling.innerHTML = "";}// 账号失去焦点事件document.getElementById('zh').onblur = function() {let = zh = this.value;let f = zh.length == 0;console.log(zh);this.nextElementSibling.innerHTML = f ? "×" : "√";// this.nextElementSibling.style.display=f?"block":"none";}// 密码获取焦点事件document.getElementById('mm').onfocus = function() {// let = zh = this.value;this.nextElementSibling.innerHTML = "";}// 密码失去焦点事件document.getElementById('mm').onblur = function() {let = zh = this.value;let f = zh.length == 0;console.log(zh);this.nextElementSibling.innerHTML = f ? "×" : "√";// this.nextElementSibling.style.display=f?"block":"none";}

 注:注意看账号和密码的代码格式内容,两者设置的自定义不同,并非全部都是一样

效果:

 密码:

 注:当内容存在焦点时则有判断,有内容则成立,无内容则错误,不成立,无法进行表单提交

 正则表达式:

<!-- 正则表达式是用于对数据格式进行判断 -->
        <!-- 定义正则表达式: var rex = /^\d$\(\d表0-0的数字) -->
        
        <!-- 1.内容(以\开头) -->
        <!-- \d:表0-9的数字 -->
        <!-- \w:表0-9a-zA-Z_ -->      (非:不是,表示否定之意,这里注意
        <!-- \D:表非0-9的数字 -->
        <!-- \W:表非0-9a-zA-Z -->
        <!-- .表任意一个单个字符 -->
        
        <!-- 2.字符出现速度 -->
        <!-- ?表0 or 一次 -->
        <!-- +表一次或者多次 -->
        <!-- *表0此或多次 -->
        <!-- \d{5}表五个数字 -->
        <!-- \d{5,10}表至低五个,至高十个 -->

 例:

// 例一:var rex = /^[A-Z]{1}\w{5,11}$/console.log(rex.test('Zking1234'));

效果:

 注:开头小写不成立,不满足;

例:

// // QQ号案例1184995259@qq.comvar rex1 = /^\d{5,12}@qq.com$/console.log(rex.test('1136889226@qq.com'));

注:后面的  @qq.com  为固定值

以正则表达式为方法的登录界面:

注:(效果与表单验证同理,但是在其基础上用正则表达式的方式进行使用。)

<form id="ff" action=""><h1>用户登录</h1>账号:<input type="text" id ="zh" /> <span></span> <br />密码:<input type="text" id="mm" /><span></span> <br /><Button>登录</Button></form><input type="text" id ="mm1"  /><span></span>document.getElementById("ff").onsubmit=function(){// 定义账号的验证规则var rex1 = /^[a-z]{5,10}$/// 定义密码 var rex2 = /^[a-z0-9A-Z.]{5,10}$/var username = rex1.test(zh.value);console.log(usernam);if(username){zh.nextElementSibling.style="color:blue";zh.nextElementSibling.innerHTML="对";}else{zh.nextElementSibling.style="color:green";zh.nextElementSibling.innerHTML="错";}var password = rex2.test(mm.value);console.log(password);if(password){mm.nextElementSibling.style="color:blue";mm.nextElementSibling.innerHTML="对";}else{mm.nextElementSibling.style="color:green";mm.nextElementSibling.innerHTML="错";}return username&&password;}

注:关键点:return username&&password;  

效果:

 注:未输入内容时的效果;

注:输入内容与为输入内容时的对照。

密码安全级别强度验证:

document.getElementById('mm1').onkeyup=function(){let c = 0;var rex1 = /^.*\d.*$/;  //包含数字var rex2 = /^.*[a-z].*$/; //包含字母var rex3 = /^.*[A-Z].*$/; //包含大写字母var rex4 = /^.*[@.].*$/; //包含特殊符号let m = this.value;if(rex1.test(m)){c++;}if(rex2.test(m)){c++;}if(rex3.test(m)){c++;}if(rex4.test(m)){c++;}let arr=['弱','中等','强','超强']if(m.length==0){this.nextElementSibling.innerHTML="";}else{this.nextElementSibling.innerHTML=arr[c-1];}}

效果:

释义

let arr=['弱','中等','强','超强']if(m.length==0){this.nextElementSibling.innerHTML="";}else{this.nextElementSibling.innerHTML=arr[c-1];   《==}

注:c-1 由强至弱反向,由弱至强正向,

总结:希望本篇有关于JavaScript表单验证和正则表达式的知识点内容能对你带来一定的帮助,同时非常感谢各位大佬们的点赞与支持,咱们下一篇不见不散。

相关文章:

JavaScript:表单及正则表达式验证

今天我要介绍的是在JavaScript中关于表单验证内容的知识点介绍&#xff1a; 关于表单验证&#xff0c;我接下来则直接将内容以及效果显示出来并作注解&#xff0c;这样可以清晰看见这个表达验证的妙用&#xff1a; <form id"ff" action"https://www.baidu.…...

一、Appium环境安装

找了一圈操作手机的工具或软件&#xff0c;踩了好多坑&#xff0c;最后决定用这个工具(影刀RPA手机用的也是这个)&#xff0c;目前最新的版本是v2.17.1&#xff0c;是基于nodejs环境的&#xff0c;有两种方式&#xff0c;我只试了第一种方式&#xff0c;第二种方式应该是比较简…...

精益数据分析(3/126):用数据驱动企业发展的深度解析

精益数据分析&#xff08;3/126&#xff09;&#xff1a;用数据驱动企业发展的深度解析 大家好&#xff01;一直以来&#xff0c;我都坚信在当今竞争激烈的商业环境中&#xff0c;数据是企业获得竞争优势的关键。最近深入研究《精益数据分析》这本书&#xff0c;收获颇丰&…...

暂存一下等会写

#include<easyx.h> IMAGE SNOW 图形变量 struct MOVE生存结构体 {int x0;int y0; bool livefalse;}; initgraph(800, 800);初始化图形界面 MOVE snowflake[5000];目标数量 loadimage(&SNOW, "snow.png");加载图片 BeginBatchDraw(); 开始批量绘图。…...

【c++深入系列】:new和delete运算符详解

&#x1f525; 本文专栏&#xff1a;c &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; “生活不会向你许诺什么&#xff0c;尤其不会向你许诺成功。它只会给你挣扎、痛苦和煎熬的过程。但只要你坚持下去&#xff0c;终有一天&…...

正弦波有效值和平均值(学习笔记)

一个周期的正弦波在坐标轴上围的面积有多大&#xff1f; 一般正弦波以 y Asin(wx)表示&#xff0c;其中A为振幅&#xff0c;W为角速度。周期T 2π/w; 确定积分区间是x 0&#xff0c;到x 2π。 计算绝对值积分&#xff1a; 变量代还&#xff1a;wx θ&#xff0c;dx dθ…...

《分布式软总线架构下,设备虚拟化技术的深度剖析与优化策略》

设备之间的互联互通和协同工作已成为一种趋势。分布式软总线架构作为实现这一目标的关键技术&#xff0c;为不同设备之间的通信和协作提供了基础。而设备虚拟化技术则是在分布式软总线架构下&#xff0c;进一步提升设备资源利用效率的重要手段。本文将深入探讨在分布式软总线架…...

首次打蓝桥杯总结(c/c++B组)

目录 一、对每个题进行总结 1.填空题 2.第一个大题---可分解的正整数&#xff08;10--3&#xff09; 3.第二道大题---产值调整&#xff08;10--3&#xff09; 4.第三道大题---画展部署&#xff08;15--7&#xff09; 5.第四道大题---水质检测&#xff08;15--3&#x…...

第八天 开始Unity Shader的学习之Blinn-Phong光照模型

Unity Shader的学习笔记 第八天 开始Unity Shader的学习之Blinn-Phong光照模型 文章目录 Unity Shader的学习笔记前言一、Blinn-Phong光照模型①计算高光反射部分效果展示 二、召唤神龙:使用Unity内置的函数总结 前言 今天我们编写另一种高光反射的实现方法 – Blinn光照模型…...

游戏NPC对话AI生成的管理调用系统设计

系统概述 游戏与故事人物对话模拟系统 此系统旨在模拟游戏或故事场景里人物的对话。它具备创建游戏与人物信息的功能&#xff0c;并且能借助输入游戏、人物、时间、地点、场景等信息&#xff0c;调用 OpenAI 格式的接口(通过One Api支持DeepSeek之类的其他AI)得到人物的对话内容…...

Go:使用共享变量实现并发

竞态 在串行程序中&#xff0c;步骤执行顺序由程序逻辑决定&#xff1b;而在有多个 goroutine 的并发程序中&#xff0c;不同 goroutine 的事件先后顺序不确定&#xff0c;若无法确定两个事件先后&#xff0c;它们就是并发的。若一个函数在并发调用时能正确工作&#xff0c;称…...

豆瓣图书数据采集与可视化分析

文章目录 一、适用题目二、豆瓣图书数据采集1. 图书分类采集2. 爬取不同分类的图书数据3. 各个分类数据整合 三、豆瓣图书数据清洗四、数据分析五、数据可视化1. 数据可视化大屏展示 源码获取看下方名片 一、适用题目 基于Python的豆瓣图书数据采集与分析基于Python的豆瓣图书…...

常见的爬虫算法

1.base64加密 base64是什么 Base64编码&#xff0c;是由64个字符组成编码集&#xff1a;26个大写字母AZ&#xff0c;26个小写字母az&#xff0c;10个数字0~9&#xff0c;符号“”与符号“/”。Base64编码的基本思路是将原始数据的三个字节拆分转化为四个字节&#xff0c;然后…...

Numpy常用库方法总结

numpy的底层是ndarray&#xff0c;也就是矩阵结构 对于ndarray结构来说&#xff0c;里面所有的元素必须是同一类型的 如果不是的话&#xff0c;会自动的向下进行转换 list [1,2,3,4,5] array np.array(list) array输出&#xff1a;array([1, 2, 3, 4, 5]) 1.1 ndarray基本…...

YOLOV8 OBB 海思3516训练流程

YOLOV8 OBB 海思3516训练流程 目录 1、 下载带GPU版本的torch(可选) 1 2、 安装 ultralytics 2 3、 下载pycharm 社区版 2 4、安装pycharm 3 5、新建pycharm 工程 3 6、 添加conda 环境 4 7、 训练代码 5 9、配置Ymal 文件 6 10、修改网络结构 9 11、运行train.py 开始训练模…...

[MySQL] 事务管理(二) 事务的隔离性底层

事务的隔离性底层 1.数据库并发的场景2.读-写2.1MVCC三个变量2.1.1 3个记录隐藏列字段2.1.2 undo日志 模拟MVCCselect 的读取2.1.3 Read View&#xff08;读视图&#xff09; 3.RR与RC的区别 1.数据库并发的场景 读-读&#xff1a;不存在问题&#xff0c;也不需要并发控制读-写…...

20、.NET SDK概述

.NET SDK&#xff08;Software Development Kit&#xff09; 是微软提供的一套开发工具包&#xff0c;用于构建、运行和管理基于 .NET 平台的应用程序。它包含了一组丰富的工具、库和运行时环境&#xff0c;支持开发者在多种操作系统&#xff08;如 Windows、Linux 和 macOS&am…...

Go:包和 go 工具

引言 通过对关联特性分类&#xff0c;组成便于理解和修改的单元&#xff0c;使包与程序其他包保持独立&#xff0c;助力大型程序的设计与维护 。模块化让包可在不同项目共享、复用、发布及全球范围使用。 每个包定义不同命名空间作为标识符&#xff0c;关联具体包&#xff0c…...

18-21源码剖析——Mybatis整体架构设计、核心组件调用关系、源码环境搭建

学习视频资料来源&#xff1a;https://www.bilibili.com/video/BV1R14y1W7yS 文章目录 1. 架构设计2. 核心组件及调用关系3. 源码环境搭建3.1 测试类3.2 实体类3.3 核心配置文件3.4 映射配置文件3.5 遇到的问题 1. 架构设计 Mybatis整体架构分为4层&#xff1a; 接口层&#…...

冒泡排序、插入排序、快速排序、堆排序、希尔排序、归并排序

目录 冒泡排序插入排序快速排序(未优化版本)快速排序(优化版本)堆排序希尔排序归并排序各排序时间消耗对比 冒泡排序 冒泡排序核心逻辑就是对数组从第一个位置开始进行遍历&#xff0c;如果发现该元素比下一个元素大&#xff0c;则交换位置&#xff0c;如果不大&#xff0c;就…...

Docker Compose 中配置 Host 网络模式

在 Docker Compose 中配置 Host 网络模式时&#xff0c;需通过 network_mode 参数直接指定容器使用宿主机的网络栈。以下是具体配置方法及注意事项&#xff1a; 1. 基础配置示例 在 docker-compose.yml 文件中&#xff0c;为需要启用 Host 模式的服务添加 network_mode: "…...

HTML、CSS 和 JavaScript 常见用法及使用规范

一、HTML 深度剖析 1. 文档类型声明 HTML 文档开头的 <!DOCTYPE html> 声明告知浏览器当前文档使用的是 HTML5 标准。它是文档的重要元信息&#xff0c;能确保浏览器以标准模式渲染页面&#xff0c;避免怪异模式下的兼容性问题。 2. 元数据标签 <meta> 标签&am…...

Elasticsearch 索引数据量激增的应对与优化:从原理到部署实践

Elasticsearch&#xff08;ES&#xff09;作为一款强大的分布式搜索和分析引擎&#xff0c;广泛应用于日志分析、全文搜索和实时数据处理等场景。然而&#xff0c;随着数据量激增&#xff0c;索引可能面临性能瓶颈&#xff0c;如写入变慢、查询延迟高或存储成本上升。如何有效应…...

CD27.【C++ Dev】类和对象 (18)友元和内部类

目录 1.友元 友元函数 几个特点 友元类 格式 代码示例 2.内部类(了解即可) 计算有内部类的类的大小 分析 注意:内部类不能直接定义 内部类是外部类的友元类 3.练习 承接CD21.【C Dev】类和对象(12) 流插入运算符的重载文章 1.友元 友元函数 在CD21.【C Dev】类和…...

QT安装详细步骤

下载 清华源 &#xff1a; 清华源 1. 2. 3. 4....

Unity游戏多语言工具包

由于一开始的代码没有考虑多语言场景&#xff0c;导致代码中提示框和UI显示直接用了中文&#xff0c;最近开始提取代码的中文&#xff0c;提取起来太麻烦&#xff0c;所以拓展了之前的多语言包&#xff0c;降低了操作复杂度。最后把工具代码提取出来到单独项目里面&#xff0c;…...

实验三 I/O地址译码

一、实验目的 掌握I/O地址译码电路的工作原理。 二、实验电路 实验电路如图1所示&#xff0c;其中74LS74为D触发器&#xff0c;可直接使用实验台上数字电路实验区的D触发器&#xff0c;74LS138为地址译码器&#xff0c; Y0&#xff1a;280H&#xff5e;287H&…...

视觉语言导航(VLN):连接语言、视觉与行动的桥梁

文章目录 1. 引言&#xff1a;什么是VLN及其重要性&#xff1f;2. VLN问题定义3. 核心挑战4. 基石&#xff1a;关键数据集与模拟器5. 评估指标6. 主要方法与技术演进6.1 前CLIP时代&#xff1a;奠定基础6.2 后CLIP时代&#xff1a;视觉与语言的统一 7. 最新进展与前沿趋势 (202…...

计算机网络中科大 - 第7章 网络安全(详细解析)-以及案例

目录 &#x1f6e1;️ 第8章&#xff1a;网络安全&#xff08;Network Security&#xff09;优化整合笔记&#x1f4cc; 本章学习目标 一、网络安全概念二、加密技术&#xff08;Encryption&#xff09;1. 对称加密&#xff08;Symmetric Key&#xff09;2. 公钥加密&#xff0…...

2026《数据结构》考研复习笔记一(C++基础知识)

C基础知识复习 一、数据类型二、修饰符和运算符三、Lambda函数和表达式四、数学函数五、字符串六、结构体 一、数据类型 1.1基本类型 基本类型 描述 字节&#xff08;位数&#xff09; 范围 char 字符类型&#xff0c;存储ASCLL字符 1&#xff08;8位&#xff09; -128…...