我希望将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
答案 0 :(得分:4)
这是因为搜索从上一次匹配开始,每次调用test
:
在同一个全局正则表达式实例上多次调用的测试将超过上一个匹配。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test