前端笔记6 表单校验与正则表达式

本文探讨了前端表单验证的重要性,提供了实现用户名、邮箱、手机号等验证的案例,并介绍了正则表达式的应用,包括基本语法、数量规则以及在JavaScript中的使用方法,展示了如何进行年龄验证。
摘要由CSDN通过智能技术生成

表单验证

为什么需要进行表单验证

用户书写 用户名和密码 之后 , 最终是需要提交到服务器上的
用户注册 QQ 号, 把信息提交各腾讯公司服务器

使用前端验证的好处

减轻服务器的压力
保证输入的数据符合要求

表单验证的思路

1- 获得表单元素值
2- 使用JavaScript的一些方法对数据进行判断
3- 当表单提交时,触发事件,对获取的数据进行验证

案例

验证 用户名 不能为空

// 使用 form 对象 绑定 提交事件
$("form").submit(function(){
    // 不为空
    if($("#username").val() == ""){
        alert("用户名不能为空, 请重新输入");
        // 使用return true  或 false  来决定 方法是否继续执行
        return false;
    }
    return true;
});

判断 用户名 6- 18 位之间

$("form").submit(function(){
    var value = $("#username").val();
    if(value.length < 6 || value.length > 18){
        alert("用户名长度必须在 6- 18 位之间!");
        return false;
    }
    return true;
});

邮箱验证

$("form").submit(function(){
    var value = $("#email").val();
    // 获取email 中 @ 的下标 和 . 的下标  并且 @ 的下标要在.之前
    var index1 = value.indexOf("@");
    var index2 = value.lastIndexOf(".");
    if(!(index1 != -1 && index2 != -1 && index1 < index2)){
        alert("邮箱不满足条件!");
        // 使用return true  或 false  来决定 方法是否继续执行
        return false;
    }
    return true;

手机号必须全部为数字 第一位为1 之后 一共10位

// 使用 form 对象 绑定 提交事件
$("form").submit(function(){
    var value = $("#telephone").val();
    // 是否为 11 位  第一位为 1  (之后10 位全部为 数字)
    var len = value.length;
    if(len != 11){
        alert("必须为11 位");
        return false;
    }
    // 使用字符串截取 第一位
    var first = value.substring(0,1);
    // console.log(first);
    if(first != "1"){
        alert("手机号第一位 必须为 1");
        return false;
    }
    // 之后10 位都是数字
    for(let i = 1;i < value.length; i++){
        let m = value.substring(i,i+1);
        // isNaN() 函数的含义为 Not a Number 不是一个数字
        if(isNaN(m)){
            alert("全部数据必须为数字");
            return false;
        }
    }
});

两次密码输入是否一致

$("form").submit(function(){
    var pwd = $("#pwd").val();
    if (pwd == "") {
        alert("密码不能为空");
        return false;
    }
    if (pwd.length < 6) {
        alert("密码必须等于或大于6个字符");
        return false;
    }
    var repwd = $("#repwd").val();
    if (pwd != repwd) {
        alert("两次输入的密码不一致");
        return false;
    }
})

实现动态提示信息

表单事件

聚焦事件 focus
// 聚焦事件
$("#pwd").focus(function(){
    $(this).next().empty();
    //  $(this).next().html("");
});
失去焦点事件 blur
$("#pwd").blur(function(){
    var mess;
    var pwd = $(this).val();
    if (pwd == "") {
        mess = "密码不能为空!!";
        $(this).next().html(mess.fontcolor("red"));
        return;
    }
    if (pwd.length < 6) {
        mess = "密码长度不能小于 6 个字符!!";
        $(this).next().html(mess.fontcolor("red"));
        return;
    }
    mess = "密码可用!!";
    $(this).next().html(mess.fontcolor("green"));
});

正则表达式

为什么需要正则表达式

简洁的代码
严谨的验证文本框中的内容

正则表达式语法

普通语法

语法描述
单个字符(多个字符)匹配到该字符的所有字符串
[abcd]或者[a-g]匹配中括号中出现的任意一个字符
[^a]取反 只要是在中括号中没有出现的
(12|ee|ad)括号表示一个整体
|或者

特殊符号

符号描述
/ XXX /表示一个模式的开始和结束
^(在中括号外匹配字符串开始) (在中括号内 取反)
$匹配字符串结束
/^内容$/一般一个正则表达式的语法
\d匹配一个数字 等价于[0-9]
\D除了数字之外的任何字符 等价于[ ^0-9]
\s任何空白字符
\S任何非空白字符
\w匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9_]
\W任何非单字字符,等价于[^a-zA-Z0-9_]
.除了换行之外的任意字符

数量规则

符号描述
{n}匹配字符出现了多少次
{n,}字符串最少出现 n次
{n,m}字符最少出现n次 最多出现m次
*等价于 {0,} 匹配前一项0次或多次
+等价于{1,} 匹配前一项1次或多次
?等价于{0,1} 匹配前一项0次或1次

手机号的正则规范

1[35678]\d{9}

JS 中的 正则表达式应用

案例

$("#telephone").blur(function(){
    // 定义一个正则表达式
    var reg = /^1[35678]\d{9}$/;
    var tele = $(this).val();
    // test() 方法  满足正则 返回 true  不满足返回false
    // alert(reg.test(tele));
    if(reg.test(tele)){
        $(this).next().html("手机号可用".fontcolor("green"));
    }else{
        $(this).next().html("手机号有误".fontcolor("red"));
    }
});

邮箱的正则规范


用户名、密码、电子邮箱、手机号码、身份证号码、生日、邮政编码、固定电话

正则表达式的定义方式

第一种

var reg = /^$/;
var reg = /^1[35678]\\d{9}$/;

第二种 (构造)

var reg = new RegExp("");
var reg = new RegExp("^1[35678]\\d{9}$");

可传参数

g : 进行全局匹配
i : 不区分大小写匹配
m : 可以进行多行匹配
var reg = /^1[35678]\\d{9}$/g;
var reg = new RegExp("^1[35678]\\d{9}$","g");

常用方法

正则表达式的方法 test()

正则表达式对象.test(字符串)

字符串中方法 match()

字符串 .match(正则表达式对象)

年龄验证

0 - 120 之间

var regAge = /^120$|^((1[0-1]|[1-9])?\d)$/m;
^120$ 
^((1[0-1]|[1-9])?\d)$    ( 0 - 119)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值