正则表达式test()
这是在今天做项目碰到的问题,找好长时间才知道问题出在哪
let str=‘asd4as4ca54caca5c6a5cadc’;
let arr=str.split(’’).reverse();
const reg=/\d/; // reg=/\d/g
let temp=[];
for(let i=0;i<arr.length;i++){
if(reg.test(arr[i])){
temp.push(arr[i]);
arr[i] = <span style="color:red;display:inline-block;">${arr[i]}</span>
}
if(temp.length>=7){
break
}
}
this.hash=arr.reverse().join(’’)
循环后并不是str内所有的数字都被push进temp里面,这是因为正则后面加了g
g表示全文查找。而且在正则表达式内部有一个**lastIndex**来记录匹配的位置,第一次调用reg后,那么lastIndex就不再等于0,当下次在调用该方法的时候,字符串的匹配会从lastIndex位置进行匹配,所以因为lastIndex的变化匹配str内的数字是跳着匹配的,只要去掉g就可以了
只为记录自己在项目遇到的各种坑