一个JS数组有两个值相同的元素,用正则test()方法测试出来却是一个true,一个false?

代码如下:

var arr = ["aab", "aab"];

var p = /(.)(?:\1+)/g;


p.test("aab");//true


p.test(arr[0]);//false

p.test(arr[1]);//true

再次进行测试:

p.test(arr[0]);//false

p.test(arr[1]);//true

p.test(arr[0]);//false

p.test(arr[1]);//true

发现是true false交替下去的

随机换了组数据测试:


var arr1 = ["a", "a"];

var p1 = /\w/g;


p1.test("a");//true


p1.test(arr[0]);//true

p1.test(arr[1]);//true

应该是我关于js数组或者正则表达式有什么地方的特性没有了解到。还望解答: )

牛魔王的故事
浏览 772回答 1
1回答

慕姐4208626

给你个这个东东看看,直接截图,不打字,不墨迹此处你的代码使用了同一个RegExp实例,自然第一次会是true,但是第二次test时,是从第2个字符开始检测,类似于/(.)(?:\1+)/g.test('b')自然得到false
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript