为啥两次运行完全相同的正则表达式的结果不同? [复制]
Posted
技术标签:
【中文标题】为啥两次运行完全相同的正则表达式的结果不同? [复制]【英文标题】:Why the results from running exactly the same regular expression twice are different? [duplicate]为什么两次运行完全相同的正则表达式的结果不同? [复制] 【发布时间】:2013-12-26 03:11:28 【问题描述】:我想用 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
【问题讨论】:
【参考方案1】:这是因为每次调用 test
时,搜索都是从上一个匹配开始的:
在同一个全局正则表达式实例上多次调用测试将超过上一次匹配。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
【讨论】:
谢谢,这对我来说是新的。以上是关于为啥两次运行完全相同的正则表达式的结果不同? [复制]的主要内容,如果未能解决你的问题,请参考以下文章