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

时间:2013-12-09 04:46:35

标签: javascript regex

我希望将URL主机部分与JavaScript中的常规表达相匹配。假设我有一个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

1 个答案:

答案 0 :(得分:4)

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

  

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

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