面试相关
相关代码
var re = /abc/g;
console.log(re.test("abcd")===re.test("abcd")); // false
var re = /abc/g;
console.log(re.test("abcd")===re.test("abcd")); // false
正则表达式中的g, 使得搜索过程后, 如果匹配成功, 则记录上一次的位置, 如果匹配不成功, 则会归零, 所以第一次是true, 第二次是false, 判断结果为false
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
因为例子中的正则带了g,所以每次调用test方法会先获取一个隐藏属性lastIndex,会跳过上次已经搜索过的部分。下次调用时,就从前一次的lastIndex开始搜索。结果搜不到,就返回false。lastIndex置为0,再下一次调用时,就又能搜到了
多次执行下面的这条语句就看明白了