解决js相同的正则多次调用test()返回的值却不同的问题
作者:专注前端30年 时间:2024-04-17 09:42:18
代码是这样的:
var reg = /^1[345678][0-9]{9}$/g;
console.log(reg.test(15328044636));
console.log(reg.test(15328044636));
会发现控制台打印的数据却是:
true
false
问题原因
这是因为正则reg的g属性,设置的全局匹配。RegExp有一个lastIndex属性,来保存索引开始位置。
上面的问题,第一次调用的lastIndex值为0,到了第二次调用,值变成了11。
var reg = /^1[345678][0-9]{9}$/g;
console.log(reg.lastIndex, reg.test(15328044636));
console.log(reg.lastIndex, reg.test(15328044636));
//打印的值
0 true
11 false
解决方案
第一种方案是将g去掉,关闭全局匹配。
第二种就是在每次匹配之前将lastIndex的值设置为0。
var reg = /^1[345678][0-9]{9}$/g;
console.log(reg.lastIndex, reg.test(15328044636));
reg.lastIndex = 0;
console.log(reg.lastIndex, reg.test(15328044636));
//打印的值
0 true
0 true
来源:https://blog.csdn.net/qq_30100043/article/details/80092012
标签:js,test
0
投稿
猜你喜欢
python实现求最长回文子串长度
2022-09-29 13:56:32
matplotlib基本图形绘制操作实例
2023-07-14 18:18:01
Python中赋值运算符的含义与使用方法
2022-05-21 12:13:45
动态加载JS文件的三种方法
2024-05-21 10:14:28
JavaScript初级教程(第五课续)第1/3页
2024-04-17 10:10:07
asp.net微信开发(永久素材管理)
2023-07-21 13:02:45
Python实战使用Selenium爬取网页数据
2021-06-18 19:11:56
xmlHttp msxml3.dll 错误 '800c0008' 解决办法
2008-08-31 20:44:00
python日志通过不同的等级打印不同的颜色(示例代码)
2022-08-18 01:47:25
Vue3中简单使用Mock.js方法实例分析
2024-04-28 09:28:05
JS代码的格式化和压缩
2007-10-17 21:17:00
详解vue中的computed的this指向问题
2024-04-27 15:46:56
Python代码块及缓存机制原理详解
2023-07-02 08:12:07
PyTorch 1.0 正式版已经发布了
2021-12-09 23:54:57
面试官常问之说说js中var、let、const的区别
2024-05-09 15:06:58
python进度条库tqdm的基本操作方法
2021-03-02 08:31:22
Python基础知识方法重写+文件处理+异常处理
2022-09-20 06:43:43
面向对象的XHTML与CSS编程
2008-01-11 13:37:00
趣用文化元素
2009-09-03 11:53:00
.NET多种数据库大数据批量插入、更新(支持SqlServer、MySql、PgSql和Oracle)
2024-01-19 07:39:40