JavaScript编程(下篇)

4.3 正则对象(重点)

  • 用于匹配一个字符串
4.3.1 创建的方式
4.3.1.1 格式
  • 以/开头,以/结尾,中间的部分即正则表达式

    var reg = /正则表达式/;
    
4.3.1.2 匹配模式
  • 忽略大小写进行比较,有两种写法

    var reg = new RegExp("正则表达式","匹配模式");
    var reg = /正则表达式/匹配模式;
    

其中:

匹配模式有一种模式`i`,意思是**忽略大小写**
4.3.1.3 正则基本语法
字符 描述
^ 匹配输入字符串的开始位置(边界匹配器的开始标记)
$ 匹配输入字符串的结束位置(边界匹配器的结束标记)
{n} 前面的字符恰好n次(数量词)
{n,} 前面的字符至少n次(数量词)
{n,m} 前面的字符n~m次(数量词)
+ 前面的字符出现1~n次(至少1次,数量词)
* 前面的字符出现0~n次(数量词)
? 前面的字符出现0~1次(要不不出现,要不只出一次,数量词)
\d 数字(范围词)
\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’,但不包含出下划线的特殊字符如@%等。(范围词)
[a-z] 出现的字符范围是a~z(范围词)
. 匹配任意字符

注:[]内的内容就是前面的字符的取值范围

4.3.2 常用的方法
JS中正则表达式的方法 说明
boolean test(“字符串”) 如果正则表达式匹配字符串,返回true,否则返回false
4.3.3 注意事项(重要)
  1. 默认情况下正则对象匹配一个字符串时,只要字符串内容出现指定内容,则视为匹配;
  2. 边界匹配器就是排除上述的问题,^后第一个字符视作正则表达式匹配的开头,$前的第一个字符视作正则表达式匹配的结尾。所以建议正则表达式都写上边界匹配器;
  3. 任何字符如果没有数量词的搭配都只能匹配一个字符
4.3.4 综合案例

需求:用户注册,需要进行如下验证,请在JS中使用正则表达式进行验证。

  1. 用户名:只能由英文字母和数字组成,长度为4~16个字符,并且以英文字母开头
  2. 密码: 大小写字母和数字6-20个字符
  3. 确认密码:两次密码要相同
  4. 电子邮箱: 符合邮箱地址的格式
  5. 手机号:/^1[34578]\d{9}$/
  6. 生日:生日的年份在1900~2009之间,生日格式为1980-5-12或1988-05-04的形式,/^((19\d{2})|(200\d))-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$/
  7. 只有所有信息都满足要求,且密码与确认密码都一致时才能提交表单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>验证注册页面</title>
        <style type="text/css">
         body {
     
            margin: 0;
            padding: 0;
            font-size: 12px;
            line-height: 20px;
         }
         .main {
     
            width: 525px;
            margin-left: auto;
            margin-right: auto;
         }
         .hr_1 {
     
            font-size: 14px;
            font-weight: bold;
            color: #3275c3;
            height: 35px;
            border-bottom-width: 2px;
            border-bottom-style: solid;
            border-bottom-color: #3275c3;
            vertical-align: bottom;
            padding-left: 12px;
         }
         .left {
     
            text-align: right;
            width: 80px;
            height: 25px;
            padding-right: 5px;
         }
         .center {
     
            width: 280px;
         }
         .in {
     
            width: 130px;
            height: 16px;
            border: solid 1px #79abea;
         }

         .red {
     
            color: #cc0000;
            font-weight: bold;
         }

         div {
     
            color: #F00;
         }
        </style>
        <script type="text/javascript">

            //检查用户名
            function checkUser() {
     
                //获得输入的用户名
                var userName = document.getElementById("user").value;   //根据id获取对应的元素,然后再获取文本框输入的内容(value)
                //获得span对象
                var span = document.getElementById("userSpan");
                //用户名对应的正则表达式
                var reg = /^[a-zA-Z][a-zA-Z0-9]{3,15}$/;
                if (reg.test(userName)) {
     
                    span.innerHTML="<font color='green'>正确</font>";
                    return true;
                } else {
     
                    span.innerHTML="<font color='red'>错误</font>";
                    return false;
                }
            }

            //检查密码
            function checkPass() {
     
                //获得输入的密码
                var userPassword = document.getElementById("pwd").value;
                //获得span对象
                var span = document.getElementById("passSpan");
                //密码对应的正则表达式
                var reg = /^[a-zA-Z0-9]{6,20}$/;
                if (reg.test(userPassword)){
     
                    span.innerHTML="<font color='green'>正确</font>";
                    return true;
                } else {
     
                    span.innerHTML="<font color='red'>错误</font>";
                    return false;
                }
            }

            //检查确认密码
            function checkRePass() {
     
                //获得输入的密码
                var userPassword = document.getElementById("pwd").value;
                //获得输入的确认密码
                var userRePass = document.getElementById("repwd").value;
                //获得span对象
                var span = document.getElementById("RepassSpan");
                if (userPassword==userRePass){
     
                    span.innerHTML="<font color='green'>正确</font>";
                    return true;
                } else {
     
                    span.innerHTML="<font color='red'>错误</font>";
                    return false;
                }
            }

            //检查邮箱
            function checkEmail() {
     
                //获得输入的用户名
                var userEmail = document.getElementById("email").value;   //根据id获取对应的元素,然后再获取文本框输入的内容(value)
                //获得span对象
                var span = document.getElementById("emailSpan");
                //邮箱对应的正则表达式
                var reg = /^[a-zA-Z1-9][a-zA-Z0-9]+@[a-zA-Z1-9]{2,}(\.[a-z]{2,3}){1,2}$/;
                if (reg.test(userEmail)) {
     
                    span.innerHTML="<font color='green'>正确</font>";
                    return true;
                } else {
     
                    span.innerHTML="<font color='red'>错误</font>";
                    return false;
                }
            }

            //检查手机号
            function checkPhone() {
     
                //获得输入的用户名
                var userPhone = document.getElementById("mobile").value;
                //获得span对象
                var span = document.getElementById("mobileSpan");
                //手机号对应的正则表达式
                var reg = /^1[34578]\d{9}$/;
                if (reg.test(userPhone)) {
     
                    span.innerHTML="<font color='green'>正确</font>";
                    return true;
                } else {
     
                    span.innerHTML="<font color='red'>错误</font>";
                    return false;
                }
            }
            //检查生日
            function checkBirth() 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值