正则表达式

1.概念
正则表达式是字符模式的对象、主要用来验证客户端的输入数据、。用户填写完表单单击按钮之后,表单就会被发送到服务器,在服务器端通常会用Java 、PHP、等服务器脚本对其进行进一步处理。因为客户端验证,可以节约大量的服务器端的系统资源,并且提供更好的用户体验

2、正则语法

2.1 创建正则

new

var box = new RegExp('box'); 	   //第一个参数 字符串
var box = new RegExp('box', 'ig'); //第二个参数 可选模式修饰符

不要加引号

var box = /box/; 	//直接用两个反斜杠
var box = /box/ig;  //在第二个斜杠后面加上模式修饰符

模式修饰符
在这里插入图片描述
2.2、测试正则表达式
在这里插入图片描述
示例

/*new创建正则· 运算符的test()示例*/
  var pattern = new RegExp('box', 'i');    //创建正则模式,不区分大小写
  var str = 'This is a Box!';              //字符串
  alert(pattern.test(str));                //通过test()方法验证是否匹配

  /*使用字面量方式的test 方法示例*/
  var pattern = /box/i;                   //创建正则模式,不区分大小写
  var str = 'This is a Box!';
  alert(pattern.test(str));
  
  /*一条语句实现正则匹配*/
  alert(/box/i.test('This is a Box!'));
  
  /*使用exec 返回匹配数组*/
  var pattern = /box/i;
  var str = 'This is a Box!';
  alert(pattern.exec(str));               //匹配了返回数组,否则返回null

2.3 使用字符串的正则表达式方法
在这里插入图片描述

/*使用match()获取获取匹配数组*/
  var pattern = /box/ig;              //忽略大小写全局搜索
  var str = 'This is a Box!,That is a Box too';
  alert(str.match(pattern));          //匹配到两个Box,Box
  alert(str.match(pattern).length);   //获取数组的长度2
  
  /*使用search()来查找匹配数据*/
  var pattern = /box/ig;
  var str = 'This is a Box!,That is a Box too';
  alert(str.search(pattern));         //查找到返回位置,否则返回-1
  //search(正则)查找到即返回,也就是说无需g 全局
  
  /*replace()替换匹配到的数据*/
  var pattern = /box/ig;
  var str = 'This is a Box!,That is a Box too';
  alert(str.replace(pattern, 'Tom'));     //将Box 替换成了Tom
  
  /*split()拆分成字符串数组*/
  var pattern = / /ig;
  var str = 'This is a Box!,That is a Box too';
  alert(str.split(pattern));              //将空格拆开分组成数组

2.4 正则表达式元字符

常用元字符
在这里插入图片描述
常用限定符
在这里插入图片描述
常用反义词
在这里插入图片描述
元字符
在这里插入图片描述
**示例 **

<script>
    window.onload = function () {
        // 校验用户名必须是 4~12 位字母数字下划线的组合, 不能以数字开头
        // [0-9]用\d表示   [a-zA-Z_0-9]用\w表示
        var regex = /^[a-zA-Z]\w{3,11}$/;
        var result = regex.test("Jack_xie");
        if (result == true) {
            alert("用户名可用.");
        } else {
            alert("请更换用户名.");
        }
        
    }
</script>

示例 表单验证
在这里插入图片描述

<body>
    <form action="server" method="post" id="myform" onsubmit="return checkAll()">
        <table class="main" border="0" cellspacing="0" cellpadding="0">
            <tr>
                <td>
                    <img src="../img/logo.jpg" alt="logo" />
                    <img src="../img/banner.jpg" alt="banner" width="350px" />
                </td>
                
            </tr>
            <tr>
                <td class="hr_1">新用户注册</td>
            </tr>
            <tr>
                <td style="height:10px;"></td>
            </tr>
            <tr>
                <td>
                    <table width="100%" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                            <!-- 长度为4~16个字符,并且以英文字母开头 -->
                            <td class="left">用户名:</td>
                            <td class="center">
                                <input id="user" name="user" type="text" class="in" onblur="checkUser()"/>
                                <span style="color: red" id="userInfo"></span>
                            </td>
                        </tr>
                        <tr>
                            <!-- 不能为空, 输入长度大于6个字符 -->
                            <td class="left">密码:</td>
                            <td class="center">
                                <input id="pwd" name="pwd" type="password" class="in" onblur="checkPassword()"/>
                                <span style="color: red" id="pwdInfo"></span>
                            </td>
                        </tr>
                        <tr>
                            <!-- 不能为空, 与密码相同 -->
                            <td class="left">确认密码:</td>
                            <td class="center">
                                <input id="repwd" name="repwd" type="password" class="in" onblur="checkRepassword()"/>
                                <span style="color: red" id="repwdInfo"></span>
                            </td>
                        </tr>
                        <tr>
                            <!-- 不能为空, 邮箱格式要正确 -->
                            <td class="left">电子邮箱:</td>
                            <td class="center">
                                <input id="email" name="email" type="text" class="in" onblur="checkMail()"/>
                                <span id="emailInfo" style="color: red;"></span>
                            </td>
                        </tr>
                        <tr>
                            <!-- 不能为空, 使用正则表达式自定义校验规则,1开头,11位全是数字 -->
                            <td class="left">手机号码:</td>
                            <td class="center">
                                <input id="mobile" name="mobile" type="text" class="in" onblur="checkMobile()"/>
                                <span id="mobileInfo" style="color: red;"></span>
                            </td>
                        </tr>
                        <tr>
                            <!-- 不能为空, 要正确的日期格式 -->
                            <td class="left">生日:</td>
                            <td class="center">
                                <input id="birth" name="birth" type="text" class="in" onblur="checkBirth()"/>
                                <span id="birthInfo" style="color: red;"></span>
                            </td>
                        </tr>
                        <tr>
                            <td class="left">&nbsp;</td>
                            <td class="center">
                                <input type="image" src="../img/register.jpg" />
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </form>
</body>
<script>
    // 检查所有 : 控制了表单的提交事件
    function checkAll() {
        return checkUser() && checkMail() && checkPassword() 
        && checkRepassword() && checkMobile() && checkBirth();
    }
 
    // 校验用户名
    function checkUser() {
        //长度为4~16个字符并以英文字母开头
        var regex = /^[a-zA-Z]\w{3,15}$/;
        return regexMethod(regex, "user");
    }

    // 校验密码
    function checkPassword() {
        var regex = /^[a-zA-Z0-9]{6,20}$/;
        return regexMethod(regex, "pwd");
    }
 
    // 校验邮箱
    function checkMail() {
        //不能为空, 邮箱格式要正确
        var regex = /^\w+@\w+(\.[a-zA-Z]{2,3}){1,2}$/;
        return regexMethod(regex, "email");
    }
 
    // 校验重复密码
    function checkRepassword() {
        //获取两次密码的数值
        var pwd = document.getElementById("pwd").value;
        var repwd = document.getElementById("repwd").value;
        //判断
        if (pwd != repwd) {
            document.getElementById("repwdInfo").innerHTML = "两次密码不一致";
            return false;
        }
        document.getElementById("repwdInfo").innerHTML = "<img src='../img/gou.png' width='15px' />";
        return true;
    }
 
    // 校验手机号码
    function checkMobile() {
        var regex = /^1[34578]\d{9}$/;
        return regexMethod(regex, "mobile");
    }
 
    // 校验生日
    function checkBirth() {
        // 1988-09-01   ·2008-12-31
        var regex = /^((19\d{2})|(200\d))-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$/; // type=date
        return regexMethod(regex, "birth");
    }
 
    //定义函数
    function regexMethod(regex, name) {
        var value = document.getElementById(name).value;
        if (regex.test(value) == false) {
            document.getElementById(name + "Info").innerHTML = "格式不正确!";
            return false;
        }
        document.getElementById(name + "Info").innerHTML = "<img src='../img/gou.png' width='15px'/>";
        return true;
    }
</script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值