JS--Day13(拖拽边界判断+正则)

一.拖拽边界判断

//拖拽边界判断
var oBox = document.querySelector("#box");
    oBox.onmousedown = function(evt){
        var e = evt || event;
        var offsetX = e.offsetX;
        var offsetY = e.offsetY;
        document.onmousemove = function(evt){
            var e = evt || event;
            var x = e.pageX - offsetX;
            var y = e.pageY - offsetY;

            if(x < 0){
                x = 0;
            }
            if(y < 0){
                y = 0;
            }
            var maxLeft = window.innerWidth - oBox.offsetWidth;

            if(x > maxLeft){
                x = maxLeft;
            }
            var maxTop = window.innerHeight - oBox.offsetHeight;

            if(y > maxTop){
                y = maxTop;
            }

            oBox.style.left = x + "px";
            oBox.style.top = y + "px";
        }
        document.onmouseup = function(){
            document.onmousemove = null;
        }
    }

二.正则表达式

①正则表达式的概念

:字符串产正确的规则

②正则表达式的作用

:前后端往往有大量的数据进行交互,正则表达式可以实现前端数据格式的校验,从而大大降低服务器压力,提高程序效率

正则表达式的定义

a.构造方法
     var reg = new RegExp('格式控制字符串','修饰符');
     var reg = new RegExp('a');//判断目标字符串是否至少包含一个a
b.字面量
    var reg = /a/;//判断目标字符串是否至少包含一个a
    console.log(reg.test("bbabb"));
    //=====================================================
    //必须使用构造方法的场景
    var arr = ["heihei","haha","xixi"];
    var reg = /arr[0]/;//这么写根本不是arr[0]数组元素的含义  
    // 解决方案
    var reg = new RegExp(arr[0]);
    
c.test

功能:判断目标字符串是否满足正则对象的格式

参数:test(目标字符串)

返回值:布尔值

console.log(reg.test("bbbb"));

④正则的各种符号

格式控制字符串:a.普通字符b.特殊字符(1.单个字符 2.组合字符串3.各种括号)

a.单个字符:

^:正则开始

$ : 正则结束

. : 元字符, 表示任意一个字符

\. : 表示转义字符 \.表示.

+: 表示其前面紧挨着的字符至少出现1次 等价{1,}

* :表示其前面出现的字符至少出现过0次 等价{0,}

?: 表示其前面出现的字符至少出现过0次,至多1次 等价{0,1}

| : 表示或者

b.组合字符:

\d : 0-9之间的任意一个数字 \d只占一个位置

\D : 除了\d

\w : 数字,字母 ,下划线 0-9 a-z A-Z _

\W : 除了\w

\s : 空格或者空白等

\S : 除了\s

c.括号:

{m,n}表示括号前面紧挨着的字符至少出现m个 至多出现n个

( : 以b开头 至少3个a 至多5个a /^ba{3,5}&/)

{m}表示括号前面紧挨着的字符只能出现m个

{m,}表示括号前面紧挨着的字符至少出现m个

[ ] 表示括号内的任意一个字符

[a-z]表示任意一个小写字母 [a-zA-Z0-9]

[^ ]表示非括号内的任意一个字符

( )一般与或连用 表示优先级

[\u4e00-\u9fa5] 任意一个中文字符

 oInput.onblur = function(){
        //至少包含一个a
        var reg = /a/;

        //至少包含aaa,强调连续字符串的概念
        reg = /aaa/;

        //只能包含,要有都有,要没都没
        // ^:正则开始
        // $: 正则结束

        //只能包含一个a
        reg = /^ababa$/;

        //以b开头  至少3个a  至多5个a
        reg = /^ba{3,5}$/;

        //6个5
        reg = /^5{6}$/;

        //邮编   6位数字  
        reg = /^\d{6}$/;

        //定义一个由字母或数字或下划线组成的用户名,范围在6,18之间
        reg = /^\w{6,18}$/;

        //定义一个由字母或数字或下划线组成的用户名,范围在6,18之间
        //但是首字母不能为数字
        reg = /^\D\w{5,17}$/;

        //定义一个密码  至少6位     
        reg = /^.{6,}$/;

        //www.baidu.com
        //: \转义字符,转义字符不能单独出现,一定和其他字符构成一个新的字符
        reg = /www\.baidu\.com/;

        //3+5
        reg = /^3\+5$/;

        //以 13 或 15 开头的手机号
        //或 (字符串1|字符串2|字符串3...)
        reg = /^1(3|5)\d{9}$/;
        reg = /^(13|15)\d{9}$/;

        //或 [(字符1字符2字符3...]
        reg = /^1[35]\d{9}$/;
        reg =  /^[a-zA-Z3-5_]$/;

        //空格
        // reg = /^\s$/;

        //除了  [^其他字符]
        // reg = /^[^123abc]$/;

        //  [\u4e00-\u9fa5] 中文范围
        // 两个中文
        // reg = /^[\u4e00-\u9fa5]{2}$/;


        console.log(reg.test(this.value));
    }

课堂练习

//1.密码强弱判断

//由数字,字母,其他字符构成
    var oInput = document.querySelector("input");

    //至少包含
    var regNum = /\d+/;
    var regLetter = /[A-Za-z]+/;
    var regChar = /[!@#$%]+/;

    //只能
    var _regNum = /^\d+$/;
    var _regLetter = /^[A-Za-z]+$/;
    var _regChar = /^[!@#$%]+$/;

    oInput.onblur = function(){
        if(regNum.test(this.value) && regLetter.test(this.value) && 
        regChar.test(this.value)){
            console.log("强");
        }else if(_regNum.test(this.value) || _regLetter.test(this.value) || 
        _regChar.test(this.value)){
            console.log("弱");
        }else{
            console.log("中");
        }
    }

//2.表单验证强化
  var oForm = document.querySelector("form");
    var oInputs = document.querySelectorAll("input[type=text]");
    var oSpans = document.getElementsByTagName("span");
    
    var flagId = false;
    var flagPwd = false;

    oInputs[0].onblur = function(){
        var regId = /^\w{6,18}$/;

        if(regId.test(this.value)){
            oSpans[0].innerHTML = "用户名格式正确";
            flagId = true;
        }else{
            oSpans[0].innerHTML = "用户名格式错误";
            flagId = false;
        }
    }

    oInputs[1].onblur = function(){
        var regPwd = /^.{6,}$/;

        if(regPwd.test(this.value)){
            oSpans[1].innerHTML = "密码格式正确";
            flagPwd = true;
        }else{
            oSpans[1].innerHTML = "密码格式错误";
            flagPwd = false;
        }
    }

    oForm.onsubmit = function(){
        if(flagId && flagPwd){
            return true;
        }else{
            return false;
        }        
    }

猜你喜欢

转载自blog.csdn.net/weixin_72756818/article/details/129555626