【js中的正则表达式和事件处理】

1. 正则

1.1 正则的概念
正则是js的内置对象是对字符串的描述。描述字符串是否合法

1.2 作用:
1)表单验证(减少后端无意义的请求)
2)提取字符串(比如 提取手机验证码)
3)替换字符串中的数据
1.3 正则的基本语法

在这里插入图片描述
正则表达式语法
[a-z]:大写字母
[A-Z]:大写字母
[0-9]:所有数字
[a-zA-Z0-9]所有数字大小写字母
^ 开头
$ 结尾
{n,m}: 最小 n 个 , 最大 m 个

       1. 密码的正则
        /^[a-zA-Z0-9_]{6,12}$/
        
    2. 用户名正则
        /^[\u4E00-\u9FA5a-zA-Z0-9_]{2,12}$/
        
    3. 邮箱正则
        /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/
// 正则表达式.test(字符串)
        let reg = /"d"/
        let str = "defout";
        let res = reg.test(str);
        console.log(res);


/*正则表达式语法 
        [a-z]:大写字母
        [A-Z]:大写字母
        [0-9]:所有数字
        [a-zA-Z0-9]所有数字大小写字母
        ^ 开头
        $ 结尾*/
        let reg1 = /"^[0-9],[a-z]$"/
        let str1 = "2997410136@qq.com"
        let res1 = reg1.test(str1) 
        console.log(res1);

2. 事件【理解】

event.target:事件源 (可以做事件委托)
event.type: 事件类型
event.clientX: X轴的坐标
event.clientY: Y轴的坐标
event.keyCode:键盘码

浏览器默认行为
阻止form表单默认提交
event.preventDefault():阻止浏览器默认行为
1)

<body>
    <form action="#">
      用户名:  <input type="text" name="username">
      密码:<input type="text" name="password">
      <input type="submit">
    </form>
    <script>
        let form = document.querySelector("form")
        form.addEventListener("submit",function(event){
            event.preventDefault()
        })
    </script>
</body>

阻止事件冒泡
event.stopPropagation()

<div class="one" style="background-color:pink; height: 500px;width: 400px;border: 1px solid #000;">
        <div class="two" style="background-color:#ab848b;width: 300px;height: 400px;">
            <div class="three" style="background-color:#69b0d1;width: 200px;height: 300px;"></div>
        </div>
    </div>
    <script>
        let one =document.querySelector(".one");
        let two =document.querySelector(".two");
        let three =document.querySelector(".three")
        one.addEventListener("click",function(){
            alert("1")
            event.stopPropagation()
        });
        two.addEventListener("click",function(){
            alert("2")
            event.stopPropagation()
        });
        three.addEventListener("click",function(event){
            alert("3")
            event.stopPropagation()
        });

    </script>

什么叫冒泡:
事件的三个阶段:

  1. 捕获阶段
    dom.addEventListener(‘事
    件类型’,function(){},true)
  2. 目标阶段
  3. 冒泡阶段
    dom.addEventListener(‘事
    件类型’,function(){},false)

问题1:

  1. 页面上 有 ul li 标签,给每一个 li 标签注册
    点击事件
  2. 通过 js 新增 li 标签
  3. 新增的 li 标签 没有事件了

解决方案:
事件委派: 委派给 父级 来处理

<ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
    <script>
        let ul =document.querySelector("ul");
        let lis = document.querySelectorAll("ul li")
       
        // 通过js添加li标签
        for(let i=0;i<8;i++){
            // 创建标签
            let li =document.createElement("li");
            // 在li标签中添加文本
            li.innerText = i+4
            // 追加到ul中
            ul.appendChild(li)
        }
        // 给 ul注册点击事件
        ul.addEventListener("click",function(event){
           if(event.target.nodeName === "LI"){
               console.log(event.target);
           }
           
        })
    </script>

问题2:

  1. 页面上 有过多的 li 标签
  2. 给每一个 li 注册点击事件
  3. 占用过多内存

事件委派: 给父元素 添加 点击事件,再通过
event.target 找到事件源的方式,找到每一个子元素,这样的好
处是:
1.事件只有一个,减少内存的消耗
2.新增的子元素,也有点击事件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林钟十九·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值