首先我们要明白为什么要表单验证?
他的目的就是为了减轻服务器的压力及 保证输入的数据符合要求
来看下我们常用的表单验证,举例让你有个浅浅的了解
日期格式
例如:年月日不能为空,月必须在1到12之间,日必须在1到31之间
表单元素是否为空
用户名和密码
例如:用户名不能少于3个字符;
密码至少6位;都不能为空。
  1. mail地址
例如:不能为空,必须包含@和.
身份证号码
必须满足身份证号的格式
表单验证的思路
当输入的表单数据不符合要求时,如何编写脚本来进行提示?
获得表单元素值
使用JavaScript的一些方法对数据进行判断
当表单提交时,触发事件,对获取的数据进行验证
我们来做个练习,实现一下验证表单内容
首先使用String 对象验证邮箱, 不能为空,格式正确
其次文本框内容的验证, 密码不能为空,不少于6个字符,姓名不能为空,不能有数字
使用String 对象验证邮箱
实现思路
1.使用val( )方法获取文本框的值
2.使用indexOf( ) 来判断字符串是否包含 “ @ ” 和 “ . ”
3.使用方法submit( )提交表单
4.根据返回值是true还是false来决定是否提交表单
针对以上我们可以使用如下代码进行演练
5.字符串验证
拆分一下我们来具体了解一下:
非空验证, 检测EmailText是否为空
if ( EmailText == "") {
     alert("Email不能为空");
     return false;
}
字符串查找,单独分析一下,做个小案例
indexOf():查找某个指定的字符串值在字符串中首次出现的位置
var str="this is js";
var selectFirst=str.indexOf("js"); 返回8
这个第一个值使我们要寻找的值,第二个值使我们返回的下标位置,12这个下标不存在,所以返回-1
var selectSecond=str.indexOf("js",12); 返回-1
验证登录页面
form.οnsubmit=function(){
      var mail= EmailText .value;
      if(mail==""){
            alert("Email 不能为空");
            return false;
      }
      if (mail.indexOf("@") == -1) {
            alert("Email 格式不正确\n必须包含@");
            return false;
      }
      if (mail.indexOf(".") == -1) {
            alert("Email 格式不正确\n必须包含.");
            return false;
      }
      return true;
}
文本框内容的验证
实现思路
使用String对象的length属性验证密码的长度
验证两次输入密码是否一致
使用length属性获取文本长度,然后使用for循环和substring( )方法依次截断单个字符
字符串验证
长度验证
length 属性可以获取字符串长度
if(pwd.length<6){
    alert(" 密码必须等于或大于6个字符");
    return false;
}
判断字符串是否有数字
使用for循环和substring()方法依次截断单个字符,再判断每个字符是否是数字
for (var i = 0; i < user.length; i++) {
/*截取单个字符*/
    var j = user.substring(i, i + 1);
    if (isNaN(j) == false) {
// isNaN(j) == false注意这个意思就是他是一个数字,如果为ture就是不是一个数字,我们也可以利用取反来使用
        alert(" 姓名中不能包含数字");
        return false;
    }
}
注册页面的验证
form.οnsubmit=function(){
      var pwd=getPwd.value;
      if (pwd == "") {
          alert(" 密码不能为空");
          return false;
      }
      if (pwd.length < 6) {
          alert(" 密码必须等于或大于6个字符");
          return false;
      }
      var repwd=pwdAgain.value;
      if (pwd != repwd) {
          alert(" 两次输入的密码不一致");
          return false;
      }
var user=userName.value;
      if (user == "") {
          alert(" 姓名不能为空");
          return false;
      }
      for (var i = 0; i < user.length; i++) {
          var j = user.substring(i, i + 1);
          if (isNaN(j) == false) {
              alert(" 姓名中不能包含数字");
              return false;
          }
      }
      return true;
    }
练习1:
电子邮箱不能为空
电子邮箱中必须包含符号 “ @ ” 和 “ . ”
当电子邮箱输入框中的内容正确时,页面跳转到注册成功页面(success.html)
校验提示特效
文本输入提示特效
实现思路
把错误信息显示在<span>中,然后使用html()方法,设置<span>和</span>之间的内容
编写脚本验证函数
鼠标失去焦点时(blur事件)调用验证函数
 <form action="./提交.html" method="get">
        请输入用户名
        <input type="text" id="">
        <input type="submit" value="提交">
    </form>
    <script>
        var input = document.querySelector("input");
        var form = document.querySelector("form");
        form.onsubmit = function () {
            if (input.value.length < 6) {
                alert("邮箱必需大于或等于6个字符")
                return false;
            }
            if (input.value == "") {
                alert("邮箱不能为空")
                return false;
            }
            if (input.value.indexOf("@") == -1 || input.value.indexOf(".") == -1) {
                alert("格式不正确")
                return false;
            }
           
        }
    </script>
练习2:
名字和姓氏均不能为空,不能有数字
密码不能少于6位,电子邮箱不能为空,格式正确
实现文本框提示特效
<form action="./提交.html" method="get">
        请输入用户名:
        <input type="text" class="input1">
        <span class="span1"></span>
        <br>
        请输入密码:
        <input type="password" class="input2">
        <span class="span2"></span>
        <br>
        请输入邮箱:
        <input type="text" class="input3">
        <span class="span3"></span>
        <br>
        <input type="submit">
    </form>
    <script>
        var input1 = document.querySelector(".input1");
        var input2 = document.querySelector(".input2");
        var input3 = document.querySelector(".input3");
        var span1 = document.querySelector(".span1");
        var span2 = document.querySelector(".span2");
        var span3 = document.querySelector(".span3");
        var form = document.querySelector("form");
        input1.onblur = in1;
        input2.onblur = in2;
        input3.onblur = in3;
        function in1() {
            if (input1.value == "") {
                span1.innerHTML = "姓名不能为空"
                span1.style.color = "red"
                return false;
            }
            for (var i = 0; i < input1.value.length; i++) {
                var j = input1.value.substring(i, i + 1)
                if (isNaN(j) == false) {
                    span1.innerHTML = "姓名不能有数字"
                    span1.style.color = "red"
                }
            }
            span1.innerHTML = "输入正确"
            span1.style.color = "green"
            return true;
        }
        function in2() {
            console.log(input2.value)
            if (input2.value == "") {
                span2.innerHTML = "密码不能为空"
                span2.style.color = "red"
                return false;
            }
            if (input2.value.length < 6) {
                span2.innerHTML = "密码不能少于6位数"
                span2.style.color = "red"
                return false;
            }
            span2.innerHTML = "输入正确"
            span2.style.color = "green"
            return true;
        }
        function in3() {
            if (input3.value == "") {
                span3.innerHTML = "邮箱不能为空"
                span3.style.color = "red"
                return false;
            }
            if ((input3.value.indexOf("@") == -1 || input3.value.indexOf(".") == -1)) {
                span3.innerHTML = "邮箱格式不正确"
                span3.style.color = "red"
                return false;
            }
            span3.innerHTML = "输入正确"
            span3.style.color = "green"
            return true;
        }
        form.onsubmit = function () {
            if (in1() == false || in2() == false || in3() == false) {
                alert("提交失败")
                return false;
            }
            return true;
        }
正则表达式
为什么需要正则表达式
简洁的代码
严谨的验证文本框中的内容
正则表达式语法
构造函数:var reg=new RegExp(pattern,modifiers);
Pattern 表达式
Modifiers 修饰符
字面量:var reg=/pattern/modifiers;
修饰符
i 执行对大小写不敏感的匹配
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止),一般配合match使用
常用的表达式
正则表达式方法
检测一个字符串是否与正则相匹配
reg.test(string) =》返回值为布尔值 true匹配,false不匹配
reg.exec(string) =》匹配成功返回数组,并确定其位置,否则返回null
var str=" efg ";
var reg=/[a-z]/;  或者  var reg=/[A-Z]/;
console.log(reg.test(str)); 
console.log(reg.exec(str));
书写的两种方式:
表达式     描述
[a-z]     查找任何从小写 a 到小写 z 的字符
[A-Z]    查找任何从大写 A 到大写 Z 的字符
[0-9]    查找任何从 0 至 9 的数字
[abc]    查找括号内的任意一个字符
[^abc] 查找除了括号内的任意字符
以上的表达式,只要有一个满足条件的就为ture
常用的元字符(特殊字符)
字符    描述
\w  匹配数字、字母(包含大小写)、下划线
\W 匹配非数字、字母、下划线
\d   匹配数字
\D  匹配非数字
\s   匹配空白字符(空格、换行)
\S   匹配非空白字符
\n   匹配换行符
注意:这些元字符在使用时需注意区分大小写

表单验证和正则表达式(一)相关推荐

  1. JavaScript中的表单验证、正则表达式、数组的使用

    表单验证.正则表达式.数组 字符串的使用 为什么要使用表单验证 表单验证的常用步骤 提交表单的2种方式 文本框对象 为什么要使用正则表达式 正则表达式的两种创建方法 正则表达式的模式 正则表达式常用的 ...

  2. HTML(六)——表单验证、正则表达式、事件

    1.表单验证<form></form> (1).非空验证(去空格) (2).对比验证(跟一个值对比) (3).范围验证(根据一个范围进行判断) (4).固定格式验证:电话号码, ...

  3. 最常用的15个前端表单验证JS正则表达式

    2019独角兽企业重金招聘Python工程师标准>>> 在表单验证中,使用正则表达式来验证正确与否是一个很频繁的操作,本文收集整理了15个常用的JavaScript正则表达式,其中包 ...

  4. html表单验证用正则表达式,JavaScript 使用正则表达式进行表单验证的示例代码

    搜索热词 JavaScript 表单验证正则表达式大全利用正则表达式判断是否是0-9的阿拉伯数字 function regIsDigit(fData) { var reg = new RegExp(& ...

  5. javascript表单验证及正则表达式

    1.表单验证的场景与意义 1.1.降低服务器压力 拦截不合格数据,避免直接提交到服务器,可以显著降低服务器开销 1.2.提升用户体验 早期的互联网,表单项非常多,注册账号需要填写20+字段.而其中有一 ...

  6. 表单验证与正则表达式

    问题:一个注册界面,包括用户名.密码.确认密码.邮箱,对其进行表单验证,要求: 各项都不能为空, 用户名由字母数字下划线组成,不能使用数字开头, 密码长度必须大于6位,但不能超过15位, 密码和确认密 ...

  7. html正则表达式表单验证,js正则表达式验证表单【完整版】

    效果图: 图(1)初始图 图(2)填入信息校验 代码如下: 完整验证表单 *{margin: 0;padding: 0;list-style:none;} body{background:#ccc;} ...

  8. js表单验证(常用的正则表达式)

    js表单验证的正则表达式,test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false. 语法:let reg=/正则表达式主体/修饰符(可 ...

  9. javascript:正则表达式、一个表单验证的例子

    阅读目录 本文内容: 正则表达式: 利用正则表达式进行表单验证的例子: 回到顶部 本文内容: 正则表达式 正则表达式的使用方法 正则表达式的特殊匹配字符 正则表达式修饰符 利用正则表达式进行表单验证的 ...

最新文章

  1. 产品经理和程序员的爱恨情仇
  2. Javascript 移动的海绵宝宝
  3. 力扣—— 三维形体投影面积
  4. 谷歌发布新编程语言,专治SQL各种“不服”
  5. 修改overflow图标 修改ActionBar的三个点的图标
  6. 在linux上安装mysql5.6,在linux(Centos 7以上版本亲测)上安装mysql5.6
  7. java 方法 示例_Java语言环境getDisplayVariant()方法与示例
  8. MySQL 创建用户
  9. 微信小程序模版合集下载,160个微信小程序源码.zip + 35个行业-微信小程序源码.zip
  10. java和是10的10次方的素数,10的11次方之内相邻两素数的最大差值
  11. TCP/IP协议号大全
  12. protobuf静态库隐藏符号的坑
  13. vue3监听网页窗口关闭
  14. 四大全球卫星导航系统都能提供什么服务?
  15. stm32 CAN通信 TJA1040
  16. python绘制一个圆当按下键盘的上下边缘会变大和变小_元贝驾考 模拟考
  17. 三星S7 Edge怎么打开usb调试呢
  18. 在职计算机培训班,计算机科学与技术在职研究生招生院校有哪些?
  19. 谁是中国移动互联网的王者?360发布定制手机消息随感
  20. 常用的 Python 标准库都有哪些?

热门文章

  1. Linux终端中各种颜色的含义
  2. android qq空间效果,更新UI设计 Android手机QQ空间1.2详测
  3. 用华为手机要学会4个高级功能,你若不会使用不如去买个小灵通
  4. 往事随风***工具包2012元月修改版
  5. booth乘法器 c语言,二进制乘法器的FPGA实现(常规和Booth乘法器)
  6. 结构体类型和变量定义及基本操作
  7. BZOJ 1862: [Zjoi2006]GameZ游戏排名系统 Splay
  8. 清除浮动的方式及其原理
  9. Spring Boot连接SQLite数据库
  10. 出现大量close_wait