正则表达式的应用——简单的表单验证

使用JavaScript事件配合正则表达式检验文本输入框数据是否正确 在输入框失去焦点时校验正确性 使用onblur方法 用户名: <input type="text" id="uname" onblur="get('uname')"><span id="testname"></span><br> 密码: <input type="text" id="upwd" onblur="get('upwd... 阅读详情

利用正则表达式和简单的方法封装,简单制作的表单验证。效果图如下:


简单的html和css部分代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        body {
            background-color: #ccc;
        }

        .box {
            width: 415px;
            background-color: #eee;
            border: 1px solid #999;
            margin: 100px auto;
            padding: 50px;
            line-height: 40px;
        }

        label {
            width: 40px;
            display: inline-block;
        }

        span {
            margin-left: 30px;
            font-size: 12px;
            padding:2px 20px 0;
            color: #ccc;
        }
    
        .wrong {
    
            color: red;
            background: url(images/error.png) no-repeat;
            
        }
    
        .right {
            color: green;
            background: url(images/right.png) no-repeat;
        }
    
        .pwd {
            width: 220px;
            height: 20px;
            background: url("images/strong.jpg") no-repeat;
        }

        .str1 {
            background-position: 0 -20px;
        }

        .str2 {
            background-position: 0 -40px;
        }
        .str3 {
            background-position: 0 -60px;
        }
        .str4 {
            background-position: 0 -80px;
        }
    </style>
</head>
<body>
    <div class="box" id="box">
        <label for="inp1">QQ</label><input type="text" id="inp1"><span>输入正确的QQ号码</span><br>
        <label for="inp2">手机</label><input type="text" id="inp2"><span>输入11为手机号码</span><br>
        <label for="inp3">邮箱</label><input type="text" id="inp3"><span>输入正确邮箱</span><br>
        <label for="inp4">座机</label><input type="text" id="inp4"><span>输入您的座机</span><br>
        <label for="inp5">账号</label><input type="text" id="inp5"><span>请输入您的账号</span><br>
        <label for="inp6">密码</label><input type="password" id="inp6"><span>请输入您的密码</span><br>
        <div id="password" class="pwd"></div>
    </div>
</body>
</html>

接下来就是js部分,思路:当输入完毕,input失去焦点后,判读输入值是否符合给定的正则表达式,根据判断结果,给span更新相应的内容和样式;其中密码输入框还需要判断密码强度,根据判断结果,给id值为password的元素更新样式。

没有逐个的获取input元素,而是封装了$()方法,并在change()函数中调用,change函数给input绑定onblur事件;由于每个input失去焦点后,span都会更新,所以封装了setText(obj,txt)和setClassName(obj,classname)。后面调用change()函数,分别传入id值:inp1、inp2、inp3、inp4、inp5、inp6,根据正则表达式判断,更新内容和样式。

//封装的一个$()方法,用于后面方便获取input元素;
    function $(id) {
        return document.getElementById(id);
    }
    console.log($("inp1"));

    //自定义change函数,传入id和fn,调用$()并绑定onblur事件;
    function change(id,fn) {
        $(id).onblur = fn;
    }

    //自定义一个setText函数,根据传入的obj参数,获取span并将innerHTML设置为参数txt;
    function setText(obj,txt) {
        obj.nextSibling.innerHTML = txt;
    }

    //自定义一个setClassName函数,根据传入的obj参数,获取span并添加样式;
    function setClassName(obj,classname) {
        obj.nextSibling.className = classname;
    }

    //调用change函数,传入id和自定义函数;
    change("inp1",function () {
        //如果inp1里的值符合给定的正则表达式,则调用setText()和setClassName(),更新span的内容和样式;
        if(/^[1-9][0-9]{4,}$/.test(this.value)) {
            setText(this,"恭喜输入正确!");
            setClassName(this,"right");
        }else{//如果不符合,同样调用setText()和setClassName(),更新span的内容和样式;
            setText(this,"对不起,输入错误!");
            setClassName(this,"wrong");
        }
    })
    //同理:
    change("inp2",function () {
        if(/^((13[0-9])|(15[^4,\D])|(17[0-9])|(18[0-9]))\d{8}$/.test(this.value)) {
            setText(this,"手机号码正确!");
            setClassName(this,"right");
        }else{
            setText(this,"对不起,是11位!");
            setClassName(this,"wrong");
        }
    })

    change("inp3",function () {
        if(/^[\w\-\.]+\@[\w]+\.[\w]{2,4}$/.test(this.value)) {
            setText(this,"邮箱输入正确!");
            setClassName(this,"right");
        }else{
            setText(this,"对不起,输入错误!");
            setClassName(this,"wrong");
        }
    })

    change("inp4",function () {
        if(/^0\d{2}-\d{8}$|^0\d{3}-\d{7}$/.test(this.value)) {
            setText(this,"座机号码正确!");
            setClassName(this,"right");
        }else{
            setText(this,"对不起,输入错误!");
            setClassName(this,"wrong");
        }
    })

    change("inp5",function () {
        if(/^[a-zA-Z0-9_-]{3,16}$/.test(this.value)) {
            setText(this,"用户名正确!");
            setClassName(this,"right");
        }else{
            setText(this,"对不起,输入错误!");
            setClassName(this,"wrong");
        }
    })

    change("inp6",function () {
        if(/^[a-zA-Z0-9_-]{6,18}/.test(this.value)) {
            setText(this,"密码正确!");
            setClassName(this,"right");
            //只要输入的密码符合给定的密码检测规则,就给passsord添加类名str1;
            $("password").className = "pwd str1";
            if(/^[A-Za-z0-9]+[_][A-Za-z0-9]*$/.test(this.value)) {
                //既有小写也有大写,还有数字和下划线;
                $("password").className = "pwd str4";
            }else if(/^([a-z].*[0-9])|([A-Z].*[0-9])|[0-9].*[a-zA-Z]$/.test(this.value)) {
                //既有小写和大写,还有数字;
                $("password").className = "pwd str3";
            }else if(/^([a-z].*[A-Z])|([A-Z].*[a-z])$/.test(this.value)) {
                //有小写和大写;
                $("password").className = "pwd str2";
            }
        }else{
            setText(this,"对不起,输入错误!");
            setClassName(this,"wrong");
        }
    })

用正则表达式验证表单 表单验证,验证用户输入的数据是否合法 一般的表单验证都是在客户端进行的,用户名重复验证是在服务端进行的一般使用AJax技术 1、用户失去焦点的时候要给出提示 本质,就是用户输入的内容与特定的规则进行匹配 a、把特定的规则写在自己的input对象中,自定义属性 b、把每一个需要验证的input对象,进行事件的绑定 c、规则与用户输入内容进行匹配,正则表达式 正则表达式规则.test(要验证的内容); d、给出明确的提示信息span标签中以及边框的颜色 2、用户点击提交按钮的时候要给出提示 立即下载

相关推荐

UVM入门与进阶学习笔记17——寄存器模型(3)

目录寄存器模型的常规方法mirror、desired和actual valueprediction的分类自动预测显式预测uvm_reg的访问方法mem与reg的联系和差别内建(built-in)sequences寄存器模型内建序列存储模型内建序列寄存器健康检查寄存器应用场景寄存器检查功能覆盖率概述覆盖率自动收集模式覆盖率外部事件触发收集 寄存器模型的常规方法 mirror、desired和actual value 在应用寄存器模型时,除了利用它的寄存器信息,也会利用它跟踪寄存器的值。 寄存器模型中的每

weixin_41979380的博客 7536

Javascript正则表达式实现输入框验证信息

一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。2.正则表达式验证输入框信息实现以下功能。...

m4587的博客 2091

企业微信消息推送(一)接收消息服务器URL

企业微信限制过多,公司域名所有权检验不通过。采用接收消息服务器URL的方式。使用vscode,将UTF-8 BOM文本编码改为UTF-8。配置接收消息服务器URL。

Xiaoweidumpb 1万+

原生JS实现表单验证(基于正则表达式)

🙋在做这个表单之前我们先想看一下做出来的静态表单: 👏看一下大致的html结构: <div class="box"> <form action="" id="form-com"> <p class="main">姓名</p> <input type="text" placeholder="请输入姓名" id="main-in" class="test">

qq_49900295的博客 2078

手把手教你用LTspice仿真扬声器阻抗曲线(附Dayton/Focal型号库)

本文详细介绍了如何使用LTspice仿真软件构建高精度扬声器模型,包括获取Dayton/Focal等厂商的SPICE模型库、模型导入方法、阻抗测试电路搭建及仿真设置。通过手把手教学,帮助读者快速掌握扬声器阻抗曲线的仿真技术,提升音响系统设计效率。

weixin_26897585的博客 390

海康威视iVMS-4200在银河麒麟系统部署全攻略与疑难排解

在信创国产化进程中,软件兼容性是关键挑战之一。以安防监控领域广泛使用的海康威视iVMS-4200客户端为例,其从Windows环境迁移到银河麒麟等国产操作系统时,面临架构适配、依赖库匹配等核心兼容性问题。这涉及到跨平台软件部署的通用原理:不同CPU架构(如ARM的飞腾、x86的兆芯)和操作系统底层API的差异,要求软件必须进行针对性编译和优化。解决这类问题的技术价值在于保障专业软件在国产化环境中的稳定运行,是信创产业落地的重要环节。具体到应用场景,如在基于银河麒麟V10的安防监控项目中,通过获取对应架构的.

weixin_33423874的博客 1456

JS正则表达式输入框验证(http、手机号、字母、数字、邮箱、身份证、省份、生日、特殊字符等)

通过JavaScript中正则表达式的 应用实现(http、电话号码、邮箱、数字、字母及其数字、时间日期、身份证)等的验证。 下面看例子demo的实现过程: js中字符串处理 }; checkCard = function(obj) { //校验长度,类型 if(isCardNo(obj) === false){ return false; } //检查省份 if(checkProvinc...

Winsom1的博客 1198

OPNET网络仿真实验

外网

嚴 帅的博客 1万+

Qt中正则表达式的使用

今天的工作中,遇到一个需求,就是界面的一个对话框中需要填入需求的字符串,因为如果填的字符串是随意的内容的话,下载到下位机上可能会使得下位机崩溃。因此我研究了一下Qt中的QLineEdit控件中使用正则表达式。首先查了一些文档,并且对此进行设置,发现只要新建一个QLineEdit后调用其中的QLineEdit::setValidator(const QValidator * v)即可。其中的QVali

冬之晓 5997

在Docker中集成GPU监控体系

先上效果图 等文档整理出来再更

tamako0v0的博客 2471

选择的 Python 解释器无效,请尝试更改解释器以启用 IntelliSense、Lint 分析和调试等功能。请查看输出,详细了解解释器无效的原因。

摘要:在VS Code中配置Anaconda Python解释器时若出现"解释器无效"错误,可通过修改用户设置解决。具体步骤:1) 按Ctrl+Shift+P打开命令面板;2) 搜索并打开用户设置JSON文件;3) 添加conda路径配置项,示例格式为"python.condaPath": "D:\\Anaconda\\setup\\Scripts\\conda.exe";4) 同时启用环境激活选项"python.terminal.act

猿小白的博客 846

JavaScript之表单验证

前言:我们这一次讲的表单验证运用了前面几篇文章说讲的的内容,比之前的要难一些,我会在代码里以注释的形式详细的讲解。 目录 一.简单的表单验证 验证方式一: 验证方式二: 二.正则验证 一.正则的规则 内容 次数 二.正则的注意事项 三.二级联动 一.简单的表单验证 验证方式一: <html> <head> <meta charset="UTF-8"> <title>Title&...

weixin_64938628的博客 1万+

Qt之自定义QToolTip,去掉显示动画和隐藏延时

先来看看Qt原生QToolTip的缺点:1.当提示内容无变化时,弹窗无法移动。只能先传个空字符串强制弹窗隐藏,然后在新位置再传个字符串。2.默认显示10多秒才消失,当然这个时间是可以设置的,但是如果我想一直显示呢?总不能设置一个超级大的时间吧。3.鼠标移出控件后(调用QToolTip::showText时传入了控件指针)默认300毫秒弹窗才隐藏。而且这个时间没法设置,如果想立即隐藏就没办法了。

草上爬的博客 4269

使用正则表达式实现简单的表单验证

正则 - 正则表达式,又名 “规则表达式” - 是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 - 正则表达式通常用来检索、替换那些符合某个规则的文本。 正则表达式里面的符号 . : 匹配非换行的任意字符 \ : 转译符号,把有意义的符号转换成没有意义的字符,把没有意义的字符转换成...

weixin_44411850的博客 4979

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

js中利用正则表达式实现简单的表单验证

正则表达式实现简单的表单验证 ** 1.Demo展示** 2 . Html布局: Document 用户名: 密码: 邮箱: 3. js代码: ~如遇错误,欢迎指正; ...

weixin_41257700的博客 346

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

JavaScript06.表单验证

回顾:JavaScript05.JS与css交互 目录 用JS实现简单验证 正则验证 正则表达式规则 正则表达式注意事项 正则的运用 实现二级联动 用JS实现简单验证 想实现表单验证,首先我们得需要表单 <form action="" onsubmit="return check()"> //在提交时会返回一个参数 <p>名字:<input type="text" id="uname"/> //名字输入框 <sp

github_67177094的博客 597

JavaScript(表单验证及省市联动)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 上期给大家介绍了如何操作css,今天这期就来给大家介绍一下 JS的表单验证吧。 一、什么是表单验证? 获取表单标签的值,对比该值是否为空或者是否和你设定的值的标准相符(比如:输入长度,字符限制等)。 如果比对有误则进行对用户的 提示(比如弹出窗口),并且阻止表单提交,反之则提交表单! 二、表单验证的类别

weixin_65474399的博客 388

正则表达式入门(js例子)

网上的正则表达式教程多种多样,不过大多是都是直接贴出来正则的一些语法,可能会让大多数刚刚接触到正则的然摸不着头脑。。。 比如js的 test()方法怎么使用正则表达式那,php那些正则函数怎么使用都是一头雾水。 首先,基础的语法我就不在这里啰嗦了,我就是帮助大家旅顺一下正则的具体使用场景,先来说js简单的表单验证,最常用的也就是test()函数 var a= '1231231'; cons

DEBUG 4383

JavaScript.06.表单验证

一、表单验证概念: 表单数据是JavaScript中的高级选项之一。 二、正则的规则: /d 数字【0-9】 /D 非数字【0-9】 /w 数字+英文+下划线【0-9a-zA-Z】 /W 非数字+非英文+非下划线【0-9a-zA-Z】 . 【任意字符】 三、表单验证常用函数方法: toLowerCase() 把字符串转化为小写 toUpperCase() 把字符串转换为大写 charAt(index) 返回在指定位置的字符 indexOf(字符串,index) 查找指定字符串值在值在字符串中出现的位置 s

T278lk的博客 737

请谈谈你对正则表达式的理解,应用场景有哪些?

正则表达式(Regular Expression),是一种用来描述一定数量文本的模式。这个正则表达式表示匹配字符串中包含 “abc” 的部分。它本质上是一个字符序列,用于匹配符合特定规则的字符串。在JavaScript中,正则表达式以。

程序员学习园地。 1388

正则表达式

什么是正则表达式? 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。接下来我用javaScript进行一些正则的演示。 // var str = 'google' // var box = /g.ogle/ // console.log(box.test(str))//返回true "." 代表匹配单个任意字符

weixin_45752307的博客 168

Web开发-表单验证

表单验证是Web开发中必不可少的一个环节,用来限制用户输入数据的规范和一致性。那么如何能够简化这一任务,让开发人员通过简单的属性设置就能达到目的呢? FineUI在这一点上也是下足了功夫,比Asp.Net原生的CompareValidator、RangeValidator、RequiredFieldValidator等控件好用多了,眼见为实,下面就来详细介绍如何在F...

weixin_30677073的博客 87

JavaScript.正则与表单验证

JavaScript.正则与表单验证.06 表单:感念 表单验证是JavaScript可用来在数据被送往服务器前对HTML表单中的这些输入数据进行验证。 本期大纲: 简单验证 使用String类型来对数据格式进行判断 完成用户名和密码的验证 长度最大为10 给出未填写提示 //先创建一个表单 <form action="" id="myForm"> //里面写两个输入框 //p 标签 做跨行作用 <p>用户名:<input type="

qq_63130170的博客 740

正则表达式应用

正则表达式应用

Greedy Hat的博客 247

JavaScript表单验证是否为中文

  JavaScript表单验证是否为中文,判断一个输入量是否为中文,通过正则表达式实现。   // 检查是否为中文   function isChn(str){   var reg = /^[u4E00-u9FA5]+$/;   if(!reg.test(str)){m.mlyrx120.com   return false;   }   return true;   } 转载于...

weixin_30642267的博客 136

js正则表达式使用

js正则表达式使用 一,概述  1,正则表达式,可以说是任何一种编程语言都提供的机制,它主要是提供了对字符串的处理能力。 2,正则表达式在页面处理中的使用场景: 1)表单验证。验证某些域符合某种规则,例如邮件输入框必须输入的是邮件、联系电话输入框输入的必须是数字等等 2)处理DOM模型。例如通过表达式定位DOM中的一个对象或一系列对象,一个例子就是定位id属性中含有某个特殊字符的div对象。

nihousheng的专栏 367
上一篇: 正则边界 和 量词
下一篇: JavaScript事件
chcfner
博客等级 码龄9年 0粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值