This question already has answers here:
Why does a RegExp with global flag give wrong results?
                                
                                    (6个答案)
                                
                        
                        
                            What is the meaning of the 'g' flag in regular expressions?
                                
                                    (8个答案)
                                
                        
                                上个月关闭。
            
                    
如果我使用RegExp test(),它会在第一次给出正确的答案,但是此后它会返回相反的结果(如果找到匹配项);否则返回假结果:

let regex = new RegExp('bird|dog', 'g')

console.log(regex.test('Imma bird')) // output: true
console.log(regex.test('Imma dog')) // output false !
console.log(regex.test('Imma dog')) // output true
console.log(regex.test('Imma bird')) // output false !?
console.log(regex.test('Imma bird')) // output true
console.log(regex.test('Imma bird')) // output false ??
console.log(regex.test('Imma believer')) // output false
console.log(regex.test('Imma believer')) // output false
console.log(regex.test('Imma believer')) // output false


如果我不使用'g'限定词,则所有操作均符合预期:

let regex = new RegExp('bird|dog')

console.log(regex.test('Imma bird')) // output true
console.log(regex.test('Imma bird')) // output true
console.log(regex.test('Imma believer')) // output false
console.log(regex.test('Imma believer')) // output false


显然,这里有些我不理解的东西。但是呢

最佳答案

g标志告诉RegExp对象记住上一次比赛的位置,并在下次尝试进行比赛(在这种情况下为测试)时从该位置继续。

07-26 09:43
查看更多