美文网首页
js 正则表达式用变量连续使用的问题

js 正则表达式用变量连续使用的问题

作者: 专治脸黑 | 来源:发表于2025-08-25 18:09 被阅读0次

在js中我们可能会遇到连续用同一个正则校验的情况,这里以校验邮箱为例
先来一段邮箱的正则

const emailReg = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/g;

然后我们先来一个邮箱校验

emailReg.test("1111111111@qq.com");
// => true

这么一看确实没问题,但是如果是多个邮箱呢

const emailReg = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/g;
console.log(emailReg.test("1111111111@qq.com"));
console.log(emailReg.test("1111111111@qq.com"));
console.log(emailReg.test("1111111111@qq.com"));
console.log(emailReg.test("1111111111@qq.com"));
console.log(emailReg.test("1111111111@qq.com"));

会发现结果和预期不太一样了


image.png

原因

这是因为正则表达式如果用变量的方式证明的话,连续使用时,他会从上一次匹配到的位置继续开始,并不是从第0个位置开始匹配的,匹配不到时会返回false,索引位置重新归0,所以第二次找不到,第三次又找到了

第一次 test("1111111111@qq.com"):匹配成功,返回 true
第二次 test("1111111111@qq.com"):因为位置已经移动,无法匹配,所以返回 false
第三次 test("1111111111@qq.com"):又回到字符串开始,匹配成功,返回 true
第四次 test("1111111111@qq.com"):位置再次移动,无法匹配,返回 false
第五次 test("1111111111@qq.com"):又回到字符串开始,匹配成功,返回 true

相关文章

  • JS作业

    使用JS对不用数字进行判断输出不同的结果 使用JS过程中出现的一些问题 使用var定义变量 JS中定义变量都是使用...

  • 2018-09-09

    js基础知识总结 变量类型及计算 问题: 1.js中使用type of能用到哪些变量 2.何时使用===何时使用=...

  • 2020-03-03--typescript

    为什么要使用TS? 获得更好的开发体验,解决JS中一些难以解决的问题 JS存在的问题: 使用了不存在的变量函数或者...

  • Linux 变量修改

    Linux中使用 ${来修改变量} 小提示:Linux的变量修改方式类似于正则表达式,匹配到字符后删除或者用新字符...

  • JavaScript变量声明、变量作用域、作用域链、函数、闭包、

    摘自《JavaScript权威指南(第六版)》 1. 变量声明 在js程序中,使用一个变量之前应该先声明,变量用v...

  • JavaScript-总结篇之变量类型

    JS中使用typeof能得到哪些类型? 何时使用===何时使用==? JS中有哪些内置函数? JS变量按照存储方式...

  • scrapy学习笔记(五)

    面对实际问题中的问题,用智慧解决。 这篇讲一个python调用scrapy执行爬虫,并用正则表达式方法提取JS信息...

  • JS部分

    引入方式 直接用标签引入 使用js文件引入 基础语法 注释 语句必须以分号结束 var 声明变量的关键字 变量名 ...

  • 变量提升和函数提升

    JS不像C语言,C语言是先声明后使用,否则会报错。但JS中,有变量提升现象,可以先使用后声明。 JS存在变量提升,...

  • 正则表达式 js应用篇

    正则表达式都应用小技巧 js中两种写正则的方法: 其中第二种可以给正则表达式添加变量 正则表达式后缀解释: /u ...

网友评论

      本文标题:js 正则表达式用变量连续使用的问题

      本文链接:https://www.haomeiwen.com/subject/trwrajtx.html