从零开始学习 JS APL(六):完整指南和实例解析

学习目标:

1. 能够利用正则表达式校验输入信息的合法性
2. 具备利用正则表达式验证小兔鲜注册页面表单的能力


学习内容:

正则表达式
综合案例
阶段案例

 


学习时间:

  • 周一至周五晚上 7 点—晚上9点
  • 周六上午 9 点-上午 11 点
  • 周日下午 3 点-下午 6 点

学习产出:

正则表达式:

什么是正则表达式:

正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对

通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式。
请在上图中找出【戴帽子和眼镜的男人】


戴帽子、戴眼镜、男人都是描述信息,通过这些信息能够在人群中查找到确定的某个人,那么这些用于查找的描述
信息编写一个模式,对应到计算机中就是所谓的正则表达式。

正则表达式在 JavaScript中的使用场景:

Ø 例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配)
Ø 比如用户名: /^[a-z0-9_-]{3,16}$/
Ø 过滤掉页面内容中的一些敏感词(
替换),或从字符串中获取我们想要的特定部分(提取)等 。

我们想要查找是否有戴眼镜的人, 怎么做呢?
1. 定义规则: 戴眼镜的
2. 根据规则去查找:找到则返回

// 使用RegExp对象创建正则表达式
let reg1 = new RegExp('\\d+', 'g');
// 使用正则表达式字面量创建
let reg2 = /\d+/g;
 

常用的正则表达式方法有:

  • test() 判断一个字符串是否匹配某个正则表达式。
  • exec() 检索字符串中符合正则表达式的第一个子串。
  • match() 检索字符串中符合正则表达式的所有子串。
  • replace() 替换字符串中符合正则表达式的子串。
  • search() 搜索字符串中符合正则表达式的位置。

 2.判断是否有符合规则的字符串:
test() 方法 用来查看正则表达式与指定的字符串是否匹配
l 语法:


l 比如:


l 如果正则表达式与指定的字符串匹配 ,返回true,否则false

元字符:

目标:能说出什么是元字符以及它的好处
l 普通字符:
大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。
也就是说普通字符只能够匹配字符串中与它们相同的字符。
l 元字符(特殊字符)
是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能。
Ø 比如,规定用户只能输入英文26个英文字母,普通字符的话 abcdefghijklm….. Ø 但是换成元字符写法: [a-z]
l 参考文档:
Ø MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
Ø 正则测试工具:http://tool.oschina.net/regex

为了方便记忆和学习,我们对众多的元字符进行了分类:
Ø 边界符(表示位置,开头和结尾,必须用什么开头,用什么结尾)
Ø 量词 (表示重复次数)
Ø 字符类 (比如 \d 表示 0~9)

边界符
^以谁开始
以谁结束


如果 ^ 和 $ 在一起,表示必须是精确匹配。

在 JavaScript 中,正则表达式可以使用以下元字符来匹配不同类型的字符:

  1. 普通字符:由字母、数字、符号等组成的字符。例如:ab12$# 等。

  2. 特殊字符:具有特殊含义的字符,必须使用反斜杠 \ 转义才能表示普通字符。例如:\d\w\s\t\r 等。

  3. 边界字符:用于匹配特定位置的字符。例如:^ 表示匹配字符串的开头,$ 表示匹配字符串的结尾,\b 表示匹配单词边界。

  4. 量词字符:用于指定匹配的次数。例如:* 表示匹配前面的字符出现任意次数(0 次或多次),+ 表示匹配前面的字符出现至少一次,? 表示匹配前面的字符出现 0 次或 1 次, {n,m} 表示匹配前面的字符出现 n 到 m 次。

  5. 分组字符:用于定义子表达式或匹配多个字符中的任何一个。例如:(abc) 表示将 abc 放入一个组中,[abc] 表示匹配 abc 中的任意一个字符。

  6. 转义字符:用于转义具有特殊含义的字符。例如:. 匹配任意单个字符,而如果需要匹配真正的句点,就要使用转义字符 \.

  7. 反向引用:用于在表达式中引用前面匹配到的子表达式。例如:(abc)\1 表示匹配 abcabc

  8. 集合类元字符:用于匹配某个字符集合中的任何一个字符。例如:[a-z] 表示匹配小写字母中的任意一个字符,[^abc] 表示匹配除了 abc 之外的任意一个字符。

这只是一些常见的元字符,实际上还有很多其他的元字符,具体的使用方法可以参考正则表达式相关的文档和教程。

案例:

用户名验证案例
需求:用户名要求用户英文字母,数字,下划线或者短横线组成,并且用户名长度为 6~16位
分析:
①:首先准备好这种正则表达式模式 /^[a-zA-Z0-9-_]{6,16}$/
②:当表单失去焦点就开始验证. ③:如果符合正则规范, 则让后面的span标签添加 right 类. ④:如果不符合正则规范, 则让后面的span标签添加 wrong 类.

案例:

昵称案例
需求:要求用户只能输入中文
分析:
①:首先准备好这种正则表达式模式 /^[\u4e00-\u9fa5]{2,8}$/
②:当表单失去焦点就开始验证. ③:如果符合正则规范, 则让后面的span标签添加 right 类. ④:如果不符合正则规范, 则让后面的span标签添加 wrong 类.


修饰符:

在 JavaScript 中,使用正则表达式时,可以使用修饰符来改变匹配行为。例如:

  1. i 修饰符:用于指定匹配时忽略大小写。例如:/abc/i 可以匹配 ABCaBc 等。

  2. g 修饰符:用于指定全局匹配,即匹配所有符合条件的字符串而不仅仅是第一个。例如:/abc/g 可以匹配 abcabc 中的两个 abc

  3. m 修饰符:用于指定多行模式,即会把每行的开头和结尾都视为一个新的字符串进行匹配。例如:/^a/m 可以匹配多行字符串中以 a 开头的字符串。

除了以上三种常见的修饰符外,还有一些较少使用的修饰符:

  1. s 修饰符:用于开启单行模式,即将整个字符串视为一行进行匹配。在单行模式下,. 元字符可以匹配换行符等通常被视为行结束的字符。

  2. y 修饰符:用于开启粘性模式,即每次匹配都从上次匹配结束的位置开始。这个修饰符通常与 g 修饰符一起使用,但比 g 更严格。

  3. u 修饰符:用于开启 Unicode 模式,即使用 Unicode 转义序列进行匹配。在 JavaScript 中,如果使用 Unicode 字符(超过 ASCII 码范围的字符),需要使用这个修饰符才能正确匹配。

以上就是 JavaScript 中常用的正则表达式修饰符,使用时需要根据具体情况进行选择。

 综合案例

分析业务模块:
①: 发送验证码模块
②: 各个表单验证模块
③: 勾选已经阅读同意模块
④: 下一步验证全部模块
只要上面有一个input验证不通过就不同意提交

需求①: 发送验证码
用户点击之后,显示 05秒后重新获取
时间到了,自动改为 重新获取
需求②: 用户名验证(注意封装函数 verifyxxx) , 失去焦点触发这个函数
正则 /^[a-zA-Z0-9-_]{6,10}$/
如果不符合要求,则出现提示信息 并 return false 中断程序
否则 则返回return true
之所以返回 布尔值,是为了 最后的提交按钮做准备
侦听使用change事件,当鼠标离开了表单,并且表单值发生了变化时触发(类似京东效
果)
 

需求③: 手机号验证
正则: /^1(3\d|4[5-9]|5[0-35-9]|6[567]|7[0-8]|8\d|9[0-35-9])\d{8}$/
其余同上
需求④: 验证码验证
正则 /^\d{6}$/
其余同上
需求⑤: 密码验证
正则 /^[a-zA-Z0-9-_]{6,20}$/
其余同上
需求⑥: 再次密码验证
如果本次密码不等于上面输入的密码则返回错误信息
其余同上
需求⑦: 我同意模块
添加类 .icon-queren2 则是默认选中样式 可以使用 toggle切换类
需求⑧: 表单提交模块
使用 submit 提交事件
如果没有勾选同意协议,则提示 需要勾选
classList.contains() 看看有没有包含某个类,如果有则返回true,么有则返回false
如果上面input表单 只要有模块,返回的是 false 则 阻止提交


 阶段案例:

需求②: 点击登录可以跳转页面
Ø 先阻止默认行为
Ø 如果没有勾选同意,则提示要勾选
Ø required 属性不能为空
Ø 假设登录成功
把用户名记录到本地存储中
同时跳转到首页 location.href        

以上就是JS APl第六部分知识点以及案例部分(需要素材可以联系我)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣11.盛最多水的容器

题目描述 思路 用双指针法。 每次向内移动较短的那个板&#xff0c;能带来更大的效益。 代码 class Solution {public int maxArea(int[] height) {int res 0;int i 0,j height.length - 1;while(i < j){res height[i] < height[j] ? Math.max((j - i) * height…

BearPi Std 板从入门到放弃 - 引气入体篇(7)(DAC)

简介 基于前面的文章, 缩略STM32CubeMx创建项目的过程&#xff0c;直接添加DAC相关初始化; 开发板 &#xff1a; Bearpi Std(小熊派标准板) 主芯片: STM32L431RCT6 LED : PC13 \ 推挽输出即可 \ 高电平点亮 串口: Usart1 KEY1 : PB2 \ 上拉 \ 按下下降沿触发(一次)\ 用于增…

2024年MCM/ICM美国大学生数学建模竞赛备战指南

01 2024美赛基本要求 1.关于时间&#xff08;北京时间&#xff09; 比赛开始时间&#xff1a; 2024年2月2日6:00至 2024年2月6日9:00 提交截止时间&#xff1a;2024年2月6日10:00 结果发布时间&#xff1a;结果将于2024年5月31日或之前发布 2.关于规则 完整的解决方案现…

海上液化天然气 LNG 终端 ,数字孪生监控系统

液化天然气 (Liquefied Natural Gas&#xff0c;简称 LNG) 在能源转型过程中被广泛认可为相对较清洁的能源选择。 相对于传统的煤炭和石油燃料&#xff0c;LNG 的燃烧过程产生的二氧化碳 (CO2) 排放较低。LNG 的燃烧释放的二氧化碳排放较少&#xff0c;因此对应对气候变化和减…

ChatGPT哪些行业需要学习?

2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

Modbus数据类型转换

前请提要: 从PLC读取的数值,不管是读正负整数还是正负浮点数,读取过来后都会变成UInt16,也就是Ushort类型 一、ushort(UInt16)转成 Int32 源代码方法: //ushort类型转Int32类型的方法private int ushortToInt32(ushort[] date, int start){//先进行判断,长度是否正确…

【算法题】一种字符串压缩表示的解压(js)

输入&#xff1a;2dff 输出 !error 两个d不需要压缩&#xff0c;故输入不合法 输入:4eA 输出:!error 全部由小写英文字母组成&#xff0c;压缩后不会出现&#xff0c;故输出不合法 function solution(str) {const error "!error";// 只能包含小写字母和数字 [^a-z0…

无需公网IP实现公网远程访问本地WebDAV服务

windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…

踩坑记录:SpringBoot集成Dubbo和Nacos版本问题

一、概述 最近在整理依赖&#xff0c;原本用的springcloud提供的nacos&#xff0c;看到老早都不更新了&#xff0c;而且有些包冲突&#xff0c;就换了ali的&#xff0c;用的spring-boot版本是2.3.9.RELEASE&#xff0c;对应spring-cloud版本是Hoxton.SR12&#xff0c;dubbo用的…

[足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-5Laplace Transform of Convolution卷积的拉普拉斯变换

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-数学基础Ch0-5Laplace Transform of Convolution卷积的拉普拉斯变换 Laplace Transform : X ( s ) L [ x ( t ) ] ∫ 0 ∞ x ( t ) e − s t d t X\left( s \right) \mathcal{L} \left[ x\lef…

现货黄金会面临哪些风险?

进行现货黄金投资&#xff0c;我们除了要了解怎么找到交易机会以外&#xff0c;也要知道我们交易会面临哪些风险&#xff0c;了解风险就是做到知己知彼&#xff0c;了解风险才能控制风险。控制住风险&#xff0c;才能为我们稳定盈利打好基础&#xff0c;那么下面我们就来看看在…

Linux入门笔记

1 Linux概述 Linux 是一套免费使用和自由传播的类 Unix 操作系统&#xff0c;是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心…

5.数据通信模型

主要内容 1.数据通信模型 2.C/S模型 3.B/S模型 4.P2P模型 数据通信模型 概念&#xff1a; 在早期的计算机网络中&#xff0c;为了有效的利用计算机&#xff0c;一般将数据通信模型分为 分散式&#xff08;Decentralized&#xff09; 集中式&#xff08;Centralized&am…

8个Python高效数据分析的技巧!

一行代码定义List 定义某种列表时&#xff0c;写For 循环过于麻烦&#xff0c;幸运的是&#xff0c;Python有一种内置的方法可以在一行代码中解决这个问题。下面是使用For循环创建列表和用一行代码创建列表的对比。 x [1,2,3,4] out [] for item in x:out.append(item**2) …

好用的音乐制作工具 Studio One 6中文 for mac

Studio One 6是一款专业的音乐制作软件&#xff0c;提供了全面而强大的功能&#xff0c;帮助音乐制作人、录音工程师和创作者实现他们的创意。 它的主要特点包括&#xff1a;直观的用户界面&#xff0c;使得操作变得简单易懂&#xff1b;支持多轨录音&#xff0c;允许用户进行…

PieCloudDB Database 自研全新向量化执行器,带来性能的数量级提升

数据分析和应用的重要性日益增长&#xff0c;对于数据平台和数据计算系统来说&#xff0c;极致的性能是关键需求之一。为实现更高效的数据并行计算&#xff0c;一款优秀的执行器需要能够充分利用硬件资源&#xff0c;如 CPU 的并行计算能力和 SIMD 指令集。此外&#xff0c;优化…

【电商API接口接入】国内最受欢迎的7大API供应平台对比和介绍

免费实用的API接口 第一部分 1、电商数据API接口&#xff08;国内外电商API接口接入&#xff09; 2、百度API Store(API集市_APIStore) 3、webxml&#xff08;确实不错&#xff09;WebXml | WEB服务 第二部分 1、地图接口 阿里云根据经纬度获取地区名接口&#xff1a; http://g…

将文件夹中所有文件名取出

dir C:\Users\是啊\Desktop\实验五/b>C:\Users\是啊\Desktop\1111.xls C:\Users\是啊\Desktop\实验五&#xff08;这个是文件夹路径&#xff09; /b &#xff08;参数&#xff09; C:\Users\是啊\Desktop\1111.xls&#xff08;文件名输出的文件路径&#xff09;

电脑版便签软件怎么设置在桌面上显示?

对于不少上班族来说&#xff0c;如果想要在使用电脑办公的时候&#xff0c;随手记录一些常用的工作资料、工作注意事项等内容&#xff0c;直接在电脑上使用便签软件记录是比较方便的。电脑桌面便签工具不仅方便我们随时记录各类工作事项&#xff0c;而且支持我们快速便捷使用这…

【动态规划】LeetCode2111:使数组 K 递增的最少操作次数

作者推荐 [二分查找]LeetCode2040:两个有序数组的第 K 小乘积 本文涉及的基础知识点 二分查找算法合集 分组 动态规划 题目 给你一个下标从 0 开始包含 n 个正整数的数组 arr &#xff0c;和一个正整数 k 。 如果对于每个满足 k < i < n-1 的下标 i &#xff0c;都有…