为什么两次运行完全相同的正则表达式的结果不同?

Shu*_*ing 0 javascript regex

我想将 URL 主机部分与 JavaScript 中的正则表达式匹配。假设我有一个 URL

var str = 'www.demo-site.com:1234'    
Run Code Online (Sandbox Code Playgroud)

我设计了下面的正则表达式来匹配它

var regex = /^www\.demo-site\.com(:\d+)$/gi    
Run Code Online (Sandbox Code Playgroud)

正如我所料,regex.test(str)返回true. 但是,如果我再次运行它,它会返回 false。为什么运行完全相同的函数两次的结果不同?

regex.test(str); //returns true
regex.test(str); //returns false

twa*_*ton 5

那是因为搜索从每次调用的前一个匹配开始test

在同一个全局正则表达式实例上多次调用 test 将超过前一个匹配项。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test