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

news2024/12/25 9:31:41

学习目标:

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第六部分知识点以及案例部分(需要素材可以联系我)

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

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

相关文章

PCIe 数据链路层

PCIe 总线的数据链路层处于事务层和物理层之间,主要功能是保证来自事务层的TLP在PCle链路中的正确传递,为此数据链路层定义了一系列数据链路层报文,即DLLP。数据链路层使用了容错和重传机制保证数据传送的完整性与一致性,此外数据…

frp内网穿透部署,轻松实现内网服务对外访问

FRP(Fast Reverse Proxy)是一种轻量级、高性能的反向代理工具,利用反向代理技术将公网请求转发至内网服务器上,并将内网服务器的响应再次转发至公网请求者。在实现内网穿透时,FRP能够将公网与内网之间的隔离突破&#…

每日一题:Leetcode1926.迷宫中离入口最近的出口

给你一个 m x n 的迷宫矩阵 maze (下标从 0 开始),矩阵中有空格子(用 . 表示)和墙(用 表示)。同时给你迷宫的入口 entrance ,用 entrance [entrancerow, entrancecol] 表示你一开始…

MYSQL练题笔记-聚合函数-游戏玩法分析

仍需成长啊,干自己认为的想干的事情的时候都有很大的挫败,那做别人分配给你的你自然会更难受些,尤其是你不懂的时候,所以加油,好好看待挫折和未成长的路啊!! 一、题目相关内容 1)相…

N26:构建无缝体验的平台工程之路-Part 1

在 N26,在生产环境中仅需一小时即可完成启动一个新的服务,包括所有必要的基础设施依赖项、功能,以及专用的数据库集群,并且其 API 可以用于通过身份验证的请求。在激烈竞争的金融市场中,迅速推出新产品和服务对于吸引和…

接口测试:身份认证(Auth认证的接口)+查询发布会

上一篇:接口测试case:查询发布会-CSDN博客(无身份认证版) 1、前置基础 一般测试工具都会提供一个User Auth/Authorization的选项,要求输入username/password字段。 系统登录功能时的username/password,是…

ke13--10章-1数据库JDBC介绍

注册数据库(两种方式),获取连接,通过Connection对象获取Statement对象,使用Statement执行SQL语句。操作ResultSet结果集 ,回收数据库资源. 需要语句: 1Class.forName("DriverName");2Connection conn DriverManager.getConnection(String url, String user, String…

机器学习 类别特征编码:Category Encoders 库的使用

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

java设计模式学习之【组合模式】

文章目录 引言组合模式简介定义与用途:实现方式UML 使用场景优势与劣势组合模式在Spring中的应用员工结构示例代码地址 引言 设想您正在组织一个大型派对,需要将各种食品和饮料按类型整理。您可能有单独的物品,如一瓶苏打水,也可…

您知道计算机是怎么分类的嘛

地表最强计算机 第 61 版全球最强大的超级计算机已经发布。名为 Top500,顾名思义,该列表列出了全球 500 台最强大的超级计算机。榜单显示,美国的AMD、英特尔和IBM处理器是超级计算系统的首选。在 TOP10 中,有四个系统使用 AMD 处理…

JWT安全及WebGoat靶场

JWT 安全 cookie(放在浏览器) cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。 cookie 由服务器生成,发送给浏览器,浏览器把 cookie 以 kv 形式保存到某个目录下的…

1+x网络系统建设与运维(中级)-练习题4

一.设备命名 LSW1 <Huawei>sys [Huawei]sysn LSW1 [LSW1]un in en 同理可得&#xff0c;给所有设备如以上命令一样配置 二.VLAN LSW1 [LSW1]vlan ba 1 10 20 100 [LSW1]int g0/0/1 [LSW1-GigabitEthernet0/0/1]port link-type trunk [LSW1-GigabitEthernet0/0/1]port tru…

axios调接口传参特殊字符丢失的问题(encodeURI 和 encodeURIComponent)

1、axios调接口特殊字符丢失的问题 项目开发过程中遇到一个接口传参&#xff0c;参数带特殊字符&#xff0c;axios调接口特殊字符丢失的问题 例如接口&#xff1a; get/user/detail/{name} name是个参数直接调接口的时候拼到接口上&#xff0c;get/user/detail/test123#$%&am…

记一次Java内存溢出导致程序宕机的问题及排查

Hi, I’m Shendi 记一次Java内存溢出导致程序宕机的问题及排查 问题场景 今天在使用工具中的 word 转 pdf 出了问题&#xff0c;报502错误&#xff0c;打开服务器发现服务被关闭了&#xff0c;起初以为是误关&#xff0c;打开后重新转换又出现了这个问题&#xff0c;在项目文件…

微信机器人接口开发

简要描述&#xff1a; 设置http回调地址 请求URL&#xff1a; http://域名地址/setHttpCallbackUrl POST 请求头Headers:&#xff08;别忘了传&#xff09; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必…

【尘缘送书第五期】Java程序员:学习与使用多线程

目录 1 多线程对于Java的意义2 为什么Java工程师必须掌握多线程3 Java多线程使用方式4 如何学好Java多线程5 参与方式 摘要&#xff1a;互联网的每一个角落&#xff0c;无论是大型电商平台的秒杀活动&#xff0c;社交平台的实时消息推送&#xff0c;还是在线视频平台的流量洪峰…

【Java 基础】23 国际化

文章目录 1.概念2.原理1&#xff09;Locale2&#xff09;ResourceBundle3&#xff09;MessageFormat 3.例子1&#xff09;准备资源文件2&#xff09;加载资源文件3&#xff09;格式化消息&#xff08;非必须&#xff09; 总结 在全球化的今天&#xff0c;开发支持多语言的应用变…

配置BFD状态与接口状态联动示例

1、BFD检测IP链路。 在IP链路上建立BFD会话&#xff0c;利用BFD检测机制快速检测故障。BFD检测IP链路支持单跳检测和多跳检测&#xff1a; BFD单跳检测是指对两个直连系统进行IP连通性检测&#xff0c;“单跳”是IP链路的一跳。 BFD多跳检测是指BFD可以检测两个系统间的任意路…

每日一练:插入排序

1. 概念及原理 插入排序是一种简单直观的排序算法&#xff0c;其基本思想是将一个元素插入到已经排序好的部分&#xff0c;然后不断地重复这个过程&#xff0c;直到整个数组有序。下面是插入排序的算法原理&#xff1a; 初始状态&#xff1a; 数组被分为已排序和未排序两个部分…

论文阅读——Deformable ConvNets v2

论文&#xff1a;https://arxiv.org/pdf/1811.11168.pdf 代码&#xff1a;https://github.com/chengdazhi/Deformable-Convolution-V2-PyTorch 1. 介绍 可变形卷积能够很好地学习到发生形变的物体&#xff0c;但是论文观察到当尽管比普通卷积网络能够更适应物体形变&#xff…