由手机号正则引发的思考,正则属性 lastIndex

news2025/1/15 16:18:29

问题:

let reg = /^1[3456789]\d{9}$/g 正则是验证手机号的证,为何突然不能验证正确的手机号了呢?其中有何蹊跷?

解决方案:底部有3种解决方案,方案3解决最稳妥

先来看一段正则:

let reg = /^1[3456789]\d{9}$/g

这个正则我们平时用来验证手机号的,好像也看不出什么毛病,把正则放到浏览器控制台,简单代入,可以对手机号正确验证
在这里插入图片描述

接着我们把这个正则拿到实战中使用:

  <input type="text" placeholder="请输入">
  <script>
    let input = document.querySelector('input');
    let reg = /^1[3456789]\d{9}$/g
    input.oninput = function (e) {
      console.log(reg.test(e.target.value));
      if (reg.test(e.target.value)) {
        console.log('手机号完整');
      } else {
        console.log('手机号不完整');
      }
    }
  </script>

再来看看这段代码的结果:

在输入框输入11位手机号后结果怎么和预期的不一样
按预期的想法应该提示 手机号完整 才对,为什么我输入了11位手机号却提示 手机号不完整 呢?

在这里插入图片描述

我们在正则文档上看到有lastIndex这个属性,看描述:

在这里插入图片描述

根据文档我们在写个类似的demo看lastIndex表达的具体意思:

当正则后使用了g 会默认 以 lastIndex 属性所指的位置作为下次检索的起始点
第一次执行regs.test(num),结果为true ,regs.lastIndex 为 1 ,因为匹配到了1,所以从2开始,这里的2索引为1
第二次执行regs.test(num),结果为true ,regs.lastIndex 为 4 ,因为匹配到了1,所以从2开始,这里的2索引为4
第三次执行regs.test(num),结果为false,lastIndex被重置为0,regs.lastIndex为 0
在这里插入图片描述

解决细节bug:

方案1: 把提前打印的去处即可,但这种方法发生bug 的概率还是挺高的

在这里插入图片描述
在这里插入图片描述

方案2: 把正则后面的g去掉即可,此方法简单方便

在这里插入图片描述
在这里插入图片描述

方案3: 想要g ,又能正常验证,把 lastIndex 设置为 0即可

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物联网架构实例—部标过检工具使用(物联网套件压测)

1.安装包 下载 2.安装MySQL数据库 如果安装时提示缺少C 2015的组件&#xff0c;需要执行vc_redist.x64.exe进行修改&#xff0c;直接双击执行vc_redist.x64.exe即可。 安装到这里&#xff0c;除了root账户外&#xff0c;另外需要增加一个gps账户&#xff0c;这个是过检工具连…

【电商】电商后台---价税管理

文章对电商后台系统中的价税管理进行了系统的介绍&#xff0c;希望通过此文能够加深你对电商系统的认识。 前面介绍了商品管理部分&#xff0c;从商品的属性、分类到商品资质、商品图片都做了说明&#xff0c;在梳理的过程中越发的感觉到每部分细节才是关键。但实话实说通过前几…

2023年全国NPDP产品经理国际认证火热招生啦

产品经理国际资格认证NPDP是国际公认的唯一的新产品开发专业认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会&#xff08;PDMA&#xff09;成立于1979年…

3节点Fate集群实战记录 -- 纵向联邦学习

前一篇博客记录了3节点fate集群实现横向联邦学习的实践过程link&#xff0c;本篇接着记录纵向联邦学习的实践过程&#xff0c;其中有些简单步骤未详细列出&#xff0c;具体执行方法可以参考上篇博客。 纵向联邦的场景简单说就是A和B两数据方&#xff0c;A知道B有A没有的特征bx&…

自监督学习UNSUPERVISED REPRESENTATION LEARNING BY PREDICTING IMAGE ROTATIONS论文笔记

文章目录一、自监督简介1.监督和无监督学习2.无监督学习3.自监督学习二、论文内容0.辅助任务1.出发点2.符号假设3.网络模型4.优点三、实验结果1.CIFAR实验a.评估学习到的特征层次结构b.探讨学习到的特征质量和辅助任务旋转角度之间的关系c.对比实验2.在IMageNet上不同任务的实验…

使用固定TCP端口地址远程MySQL数据库【内网穿透】

系列文章 公网远程连接内网MySQL数据库【内网穿透】使用固定TCP端口地址远程MySQL数据库【内网穿透】 在上篇文章中&#xff0c; 我们成功实现了在公网环境下远程连接内网MySQL数据库。但由于使用的免费的cpolar内网穿透&#xff0c;其所生成的公网地址为随机临时地址&#xf…

Java swing实现的一款餐厅点餐系统

一、项目简介 本项目是一套Java swing实现的一款餐厅点餐系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&#xff0c;确…

Python 面向对象编程 (二) —— 类函数的定义和构造

【无限嚣张&#xff08;菜菜&#xff09;】&#xff1a;hello您好&#xff0c;我是菜菜&#xff0c;很高兴您能来访我的博客&#xff0c;我是一名爱好编程学习研究的菜菜&#xff0c;每天分享自己的学习&#xff0c;想法&#xff0c;博客来源与自己的学习项目以及编程中遇到问题…

日本知名汽车零部件公司巡礼系列之株式会社137

株式会社137 业务内容&#xff1a; 汽车功能部件制造(离合器系统、制动系统) 代理供货业务(汽车相关制造商) 运输业务(汽车相关制造商) 公司简介&#xff1a; 资本金&#xff1a;5000万日元 员工数&#xff1a;山形工厂44名&#xff08;男31名&#xff0c;女13名&#xf…

折腾Transmission实现固定IP服务器BT做种教程

title: 折腾Transmission实现固定IP服务器BT做种完美 通过网络分享资源&#xff0c;是为了让人下载&#xff0c;但由于种种原因&#xff0c;放到商业网盘的资源经常会被删除&#xff0c;于是我只好自建简易的http文件下载服务&#xff0c;比如frp.v2fy.com [外链图片转存中……

易基因|动物发育过程中顺式调控区域的活性DNA去甲基化早于脊椎动物起源:重磅研究

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 2022年12月02日&#xff0c;澳大利亚悉尼加尔文医学研究所基因组学和表观遗传学系Ozren Bogdanovic研究团队在《SCIENCE ADVANCES》杂志发表了题为“Active DNA demethylation of develo…

随机创建姓名、手机号等信息Faker类创建的对象的各方法

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 随机创建姓名、手机号等信息 Faker类创建的对象的各方法 [太阳]选择题 以下python代码结果错误的一项是? from faker import Faker fkFaker() print(fk.name()) print(fk.phone_number()) p…

基于gis平台监控的点位规划系统研究

一、背景 自 2002 年天津市启动了以 “警防、民防、技防” 三张网为主要内容的社会治安防控体系。“技防网” 既覆盖天津全域的具有地区特点的城市报警与监控系统。经多年推进建设&#xff0c;“技防网” 已形成了较为完整的架构体系和建设、运行、管理模式&#xff0c;整体架构…

【K3s】第7篇 详解Kubernetes发布服务类型(例如:暴露给 Kubernetes 集群外部的 IP 地址)

目录 1、发布服务类型 2、NodePort 类型 选择你自己的端口 为 type: NodePort 服务自定义 IP 地址配置 1、发布服务类型 对一些应用的某些部分&#xff08;如前端&#xff09;&#xff0c;可能希望将其暴露给 Kubernetes 集群外部的 IP 地址。 Kubernetes ServiceTypes 允许…

Vue二次封装组件并发布到npm仓库

1.认识npm NPM的全称是Node Package Manager&#xff0c;是一个NodeJS包管理和分发工具&#xff0c;已经成为了非官方的发布Node模块&#xff08;包&#xff09;的标准。 使用Vue框架进行开发&#xff0c;组件封装是一个很常规的操作。一个封装好的组件可以在项目的任意地方使…

FFmpeg简单使用:解封装h264 ---- 提取SPS PPS

前言 我们从flv和mp4等文件解封装读取的AVPacket并没有SPS、PPS数据&#xff0c;而是保存在 AVFormatContext -> streams -> codecpar -> extradata里面&#xff0c;下面我们打开一个flv文件看一下 分析一下这块数据&#xff0c;起始位置&#xff1a;0980 大小&#…

【软件测试】测试点总结,收取短信验证码的测试(详全),你的即用宝典......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 现在的APP&#xff…

技术评审管理方案

技术评审&#xff08;Technical Review, TR&#xff09;的目的是尽早地发现工作成果中的缺陷&#xff0c;并帮助开发人员及时消除缺陷&#xff0c;从而有效地提高产品的质量。 技术评审过程域是SPP模型的重要组成部分。本规范阐述了技术评审过程域的三个主要规程&#xff1a; …

基于Java(SSM+SpringBoot+Thymeleaf)+MySQL 开发的论坛社区网站【100010072】

基于 SSM Spring Boot Thymeleaf 开发的论坛社区网站 项目概述 本项目是依据 2019 年牛客项目&#xff0c;基于 SSM Spring Boot Thymeleaf 开发的论坛社区网站&#xff0c;网站实现了如下功能&#xff1a; 使用 Spring Email Interceptor Spring Security 等实现网站…

unity组件介绍

所有物体都是一个空物体&#xff0c;加上一些组件才形成了所需要的GameObject。 这是一个空物体&#xff0c;在Scene场景中没有任何外在表现&#xff0c;因为它只有Transform这个组件&#xff0c;表示它仅仅只有位置&#xff0c;旋转和缩放。 Mesh组件 Mesh Filter mesh filt…