【学习笔记53】JavaScript正则表达式练习题

news2025/1/16 2:01:12

正则表达式练习题

    • 一、用户名、密码和手机号的验证
      • 1、案例要求
      • 2、案例分析
      • 3、HTML和CSS代码
      • 4、JS代码
    • 二、密码强度
      • 1、案例要求
      • 2、案例分析
      • 3、HTML和CSS代码
      • 4、JS代码的实现
    • 三、书写正则验证邮箱
      • 1、邮箱的验证
      • 2、代码的实现
    • 四、书写正则验证0~255的数字

一、用户名、密码和手机号的验证

在这里插入图片描述

1、案例要求

  • 用户名以数字或字母开头, 6~11 位;
  • 密码6~12位数字字母下划线;
  • 手机号11位数字

2、案例分析

  1. input框的失焦事件
  2. input输入的内容
  3. 判断输入的内容, 是否符合要求,不符合, 警告文本提示

3、HTML和CSS代码

    <form action="">
        <p>
            用户名:<input type="text" class="name">
            <span>您输入的内容不符合规则</span>
        </p>
        <p>&ensp;&ensp;码:<input type="text" class="pwd">
            <span>您输入的内容不符合规则</span>
        </p>
        <p>
            手机号:<input type="text" class="num">
            <span>您输入的内容不符合规则</span>
        </p>
        <button>提交</button>
    </form>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        form{
            width: 550px;
            height: 250px;
            border: 3px solid pink;
            margin: 40px auto;
            padding: 20px;
            font-size: 18px;
            border-radius: 3%;
        }
        input{
            width: 200px;
            height: 27px;
            margin-bottom: 20px;
        }
        button{
            width: 150px;
            height: 40px;
            font-size: 16px;
            margin-top: 10px;
        }
        p{
            display: flex;
        }
        span{
            color: red;
            font-size: 16px;
            display: none;
            margin-right: 5px;
        }
    </style>

4、JS代码

4.1 代码的实现

        // 获取标签对象
        const oIptName = document.querySelector('.name');   //用户名
        const oIptPwd  = document.querySelector('.pwd');     //密码
        const oIptNum  = document.querySelector('.num');     //号码


        // 给用户名添加失焦事件
        oIptName.addEventListener('blur', function(e){
            // 拿到用户输入的用户名
            let value = e.target.value;

            // 定义正则表达式 以数字或字母开头、6~11 位;
            let reg = /^[0-9A-Za-z]{6,11}$/;

            // 根据正则表达式判断
            if(reg.test(value)){
                e.target.nextElementSibling.style.display = 'none';
            }else{
                e.target.nextElementSibling.style.display = 'block';
            }
        })

        oIptPwd.addEventListener('blur', function(e){
            // 拿到用户输入的密码
            let value = e.target.value;

            // 定义正则表达式 6~12位数字字母下划线;
            let reg = /^\w{6,12}$/;

            // 根据正则表达式判断
            if(reg.test(value)){
                e.target.nextElementSibling.style.display = 'none';
            }else{
                e.target.nextElementSibling.style.display = 'block';
            }
        })

        oIptNum.addEventListener('blur', function(e){
            // 拿到用户输入的手机号
            let value = e.target.value;

            // 定义正则表达式 11位数字;
            let reg = /^\d{11}$/;

            // 根据正则表达式判断
            if(reg.test(value)){
                e.target.nextElementSibling.style.display = 'none';
            }else{
                e.target.nextElementSibling.style.display = 'block';
            }
        })

4.2 代码优化

        // 获取标签对象
        const oIpt = [...document.querySelectorAll('input')];

        // 创建正则表达式 以对象形式
        const reg = {
            name: /^[0-9A-Za-z]{6,11}$/,
            pwd: /^\w{6,12}$/,
            num: /^\d{11}$/
        }

        // 循坏遍历
        oIpt.forEach(function(item){

            // 给对象添加失焦事件
            item.addEventListener('blur', function(){
                // 获取用户终正在输入的数值
                let value = this.value;

                // 获取正则
                let fnReg = reg[this.className];

                // 根据正则去判断
                if (fnReg.test(value)) {
                    // 字符串符合条件
                    this.nextElementSibling.style.display = 'none'
                } else {
                    // 字符串不符合条件
                    this.nextElementSibling.style.display = 'block'
                }
            })
        })

在这里插入图片描述

二、密码强度

在这里插入图片描述

1、案例要求

密码包含数字-字母-符号(!@#)

  1. 包含一种~弱;
  2. 包含两种~中;
  3. 包含三种~强

2、案例分析

判断密码符合这三种格式的那些

  1. 拿到密码
  2. 判断正则符合三个强度的那些
  3. 根据强度让对应的span高亮

3、HTML和CSS代码

    <form>
        <label>
            密码 : <input type="text">
            <p>
                <span></span>
                <span></span>
                <span></span>
            </p>
        </label>
    </form>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        form {
            width: 500px;
            height: 150px;
            padding: 20px;
            border: 2px solid #000;
            border-radius: 15px;
            margin: 50px auto;
        }

        label {
            font-size: 20px;
        }

        label>input {
            font-size: 20px;
            padding-left: 20px;
            margin-bottom: 20px;
        }

        label>p {
            height: 30px;
            display: flex;
            justify-content: space-between;
            margin-top: 20px;
        }

        label>p>span {
            width: 30%;
            height: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
            background-color: #ccc;
            color: #fff;
        }

        label>p>span:nth-child(1).active {
            background-color: red;
        }

        label>p>span:nth-child(2).active {
            background-color: orange;
        }

        label>p>span:nth-child(3).active {
            background-color: green;
        }
    </style>

4、JS代码的实现

        // 获取标签对象
        const oIpt = document.querySelector('input');
        const oSpans = [...document.querySelectorAll('span')];

        // 给密码框添加输入事件
        oIpt.oninput = function () {
            // 获取输入框的value
            const value = this.value;

            // 定义正则表达式 判断密码强度
            const l1 = /\d/;
            const l2 = /[a-zA-Z]/;
            const l3 = /[!@#]/;

            //通过正则判断当前密码强度
            // 定义变量 用于存储密码强度的等级,默认为0级
            let level = 0;  
            if (l1.test(value)) { level++ };
            if (l2.test(value)) { level++ };
            if (l3.test(value)) { level++ };
            /**
             *  根据密码强度决定那些span高亮
             * 
             *  level == 3      oSpans[0][1][2]  高亮显示
             *  level == 2      oSpans[0][1]     高亮显示
             *  level == 1      oSpans[0]        高亮显示
            */

            // 通过循坏判断密码强度的等级
            for (let i = 0; i < oSpans.length; i++) {

                oSpans[i].className = ''

                if (i < level) {

                    oSpans[i].className = 'active'
                }
            }
        }

三、书写正则验证邮箱

1、邮箱的验证

  1. @前面只能包含数字字母下划线,
  2. @前只能出现6~10位, 不能以下划线开头;
  3. 邮箱类型只接受163与qq; 后缀只接受com与cn

2、代码的实现


        //定义正则表达式 
        const reg = /^[0-9A-Za-z]\w{5,9}@(163|qq)\.(com|cn)$/;   

        //定义邮箱 进行验证
        const str1 = 'Wangyi@163.com';
        const str2 = 'Wangyi@qq.com';
        const str3 = 'Wangyi@163.cn';
        const str4 = 'Wangyi@qq.cn';

        console.log(reg.test(str1));
        console.log(reg.test(str2));
        console.log(reg.test(str3));
        console.log(reg.test(str4));

在这里插入图片描述

四、书写正则验证0~255的数字

        /**
         *      0~9         \d                           |
         *      10~99       \d{2}    ->    ([1-9]\d)     |
         *      100~199     1\d{2}                       |
         *      200~249     2[0-4]\d                     |
         *      250~255     25[0-5]
        */
        const reg = /^(\d|([1-9]\d)|1\d{2}|2[0-4]\d|25[0-5])$/;

        console.log(reg.test('0'));
        console.log(reg.test('10'));
        console.log(reg.test('100'));
        console.log(reg.test('200'));
        console.log(reg.test('255'));
        console.log(reg.test('12345'));

在这里插入图片描述

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

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

相关文章

global关键字、python实现ATM简单功能

目录 一.局部变量、全局变量 二.global关键字 演示 三.编写ATM程序 要求 详细步骤 存在问题 改进 完整代码 一.局部变量、全局变量 1.什么是局部变量 作用范围在函数内部&#xff0c;在函数外部无法使用 2.什么是全局变量 在函数内部和外部均可使用 3.如何将函数内定…

Nature子刊:精准预测分子性质和药物靶标的无监督学习框架

药品的临床疗效与安全性由在人类蛋白质组内的分子靶标决定。本文中&#xff0c;湖南大学信息科学与工程学院的李肯立/曾湘祥教授课题组提出了一种无监督的预训练深度学习框架&#xff0c;对 1000 万个未标记的类药性、生物活性分子进行预训练&#xff0c;以预测候选化合物的药物…

osgEarth示例分析——osgearth_manip

前言 本示例主要演示osgEarth的事件处理的用法&#xff0c;内容比较多&#xff0c;这部分功能也很重要。 输入命令依然采用china-simple.earth的示例&#xff0c;加上了模型&#xff0c;但是模型并没有看到&#xff0c;可能是因为模型没有放大太小的原因。在代码中设置了不加…

传奇单机架设登录器配置教程

传奇单机顾名思义就是在本地电脑上架设传奇&#xff0c;限制同一个局域网才能一起玩&#xff0c;我接触到几个朋友不明白外网和单机的区别 架设单机需要准备以下程序&#xff1a; 传奇服务端&#xff08;版本Mirserver&#xff09; DBC2000 (百度可直接下载&#xff09; 配套登…

IPv6进阶:IPv6 过渡技术之 GRE 隧道

实验拓扑 R1-R3-R2之间的网络为IPv4环境PC1及PC2处于IPv6孤岛 实验需求 R1及R2为IPv6/IPv4双栈设备在R1及R2上部署GRE隧道使得PC1及PC2能够互相访问&#xff08;先采用IPv6静态路由实现互通&#xff09;R1及R2基于建立好的GRE隧道运行OSPFv3交互IPv6路由前缀 实验步骤及配置…

【数据可视化】免费开源BI工具 DataEase 之 Tab 组件前世今生

小D &#xff1a;小助理&#xff0c;小助理&#xff0c;在哪儿呢&#xff1f;&#xff08;焦急脸&#xff09; BI 小助理&#xff1a;在呢&#xff0c;啥事&#xff1f;&#xff08;不耐烦脸&#xff09; 小D &#xff1a;又有 BI 工具放大招啦&#xff01;&#xff01;&…

C语言习题练习11--指针

1.代码结果 #include <stdio.h> int main() {int arr[] {1,2,3,4,5};short *p (short*)arr;int i 0;for(i0; i<4; i){*(pi) 0;}for(i0; i<5; i){printf("%d ", arr[i]);}return 0; } 正常&#xff1a;0001--00 02--00 03--00 04--00 05 数组内部是倒…

Kotlin高仿微信-第2篇-登录

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点&#xff0c;包括&#xff1a;注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

【安卓逆向】去除云注入(使用MT论坛dl的方法总结拓展)

1 需求 因为最近使用的虚拟机突然不能用了&#xff0c;被人云注入强制弹窗&#xff0c;如下图&#xff1a;&#xff08;这一看就是云注入了&#xff09; 2 大佬的方法 如图&#xff08;MT大佬分享的&#xff0c;感兴趣的朋友可以去大佬主页看看他其他文章&#xff09;&…

把backtrader改造成金融强化学习回测引擎

原创文章第119篇&#xff0c;专注“个人成长与财富自由、世界运作的逻辑&#xff0c; AI量化投资”。 继续强化学习应用于金融投资。 我们的AI量化平台&#xff0c;针对传统规则量化策略&#xff0c;进行了“积木式”的拆分&#xff0c;这种拆分的好处&#xff0c;就是最大化…

【三维目标检测】Part-A2(二)

PartA2数据和源码配置调试过程请参考上一篇博文&#xff1a;【三维目标检测】Part-A2&#xff08;一&#xff09;_Coding的叶子的博客-CSDN博客。本文主要详细介绍PartA2网络结构及其运行中间状态。 1 PointRCNN模型总体过程 Part-A2的整体结构如下图所示&#xff0c;主要包括…

据2019年中国社交电商行业研究报告称,电商正处于更新换代的时期

引言&#xff1a; 据艾瑞咨询《2019年中国社交电商行业研究报告》示,传统主流电商平台用户与交易规模增速均呈现逐渐放缓的趋势,平台亟需找到更高效、低价、高粘性的流量来源,来跳出竞争日益激烈获客成本持续攀升的困境。移动互联网时代,微信、QQ、微博、快手、抖音等社交类AP…

Wordpress模板主题中functions.php常用功能代码与常用插件(持续收集整理)

用Wordpress建站的初学者一定会需要用到的Wordpress模板主题中functions.php常用功能代码与常用插件。慢慢持续收集整理....... 目录 一、Wordpress模板主题中functions文件常用的代码 二、Wordpress自定义字段的设定与调用代码&#xff08;系统常规自定义字段&#xff09; …

【面试宝典】Java八股文之Dubbo 面试题

Dubbo 面试题1、为什么要用 Dubbo?2、Dubbo 的整体架构设计有哪些分层?3、默认使用的是什么通信框架&#xff0c;还有别的选择吗?4、服务调用是阻塞的吗?5、一般使用什么注册中心?还有别的选择吗?6、默认使用什么序列化框架&#xff0c;你知道的还有哪些?7、服务提供者能…

下沉市场投资热度提升 7天酒店打造酒店投资“极致性价比”

近日&#xff0c;7天酒店 “总裁面对面”酒店投资云沙龙活动举办&#xff0c;通过微信、抖音双平台联合直播&#xff0c;多维度探讨酒店行业的“新蓝海”机遇以及下沉市场的投资模式&#xff0c;助力更多投资人把握新的市场红利。 经济型酒店拥抱“新蓝海” 下沉市场投资热度提…

【学习笔记60】JavaScript原型链的理解

一、万物皆对象 JS中, 万物都可以都可以称为对象 1、对象概念 含义1: 一种数据格式 {key: value, key2: value2}含义2: 某一类事务的实例(某一类内容中的真实个体) 2、说明 arr1就是Array这一类内容中的某一个真实个体数组也可以算作一个对象(Array 这一类事务中的一个个体) …

天宇优配|酒企没借壳!标准股份股价上演A杀,两跌停

11月28日晚间&#xff0c;接连三日大跌的规范股份&#xff08;600302.SZ&#xff09;发布股价异动公告&#xff0c;再次否定了借壳和重组风闻。当日龙虎榜该股获净卖出774.89万元&#xff0c;闻名游资“赵老哥”常用席位中国银河绍兴现身卖一席位。另外&#xff0c;也有多家本地…

五笔会消亡吗

今天第一次看到“五笔会消亡”的说法。一看好像也没有什么消不消亡的说法&#xff0c;但是深入想一想好像的确是有一个现象90 后 00后使用五笔的应该会少很多&#xff0c;可能用的非常少。 从五笔与拼音在百度的搜索比例也可以看出&#xff0c;的确在2015~2016年间有了转折&am…

【Hack The Box】linux练习-- Paper

HTB 学习笔记 【Hack The Box】linux练习-- Paper &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月27日&#x1f334; &#x1f36…

第一期 微信云开发小程序介绍-生活智打卡

目录 1.项目介绍 1.1 开发背景 1.2 项目简介 1.2.1 雏形 1.2.2 现状 1.2.3 展望 1.3 市场分析 1.3.1 目标用户 1.3.2 市场需求分析 1.4 系统需求 1.5 竞品分析 2.产品设计 2.1产品功能 2.1.1 智打卡 2.1.2 发现 2.1.2 我的 2.2交互设计 2.2.1 智打卡流程 2.2…