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

Why the results from running exactly the same regular expression twice are different?

本文关键字:正则表达式 结果 运行 两次 为什么      更新时间:2024-05-29

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

var str = 'www.demo-site.com:1234'    

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

var regex = /^www'.demo-site'.com(:'d+)$/gi    

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

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

这是因为每次调用test:时,搜索都从上一个匹配开始

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

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