为啥两次运行完全相同的正则表达式的结果不同? [复制]

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 trueregex.test(str); //returns false

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

谢谢,这对我来说是新的。

以上是关于为啥两次运行完全相同的正则表达式的结果不同? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 libsvm 在同一数据集上创建不同的结果

为啥我使用这些 Raku 正则表达式会得到不同的回溯?

为啥更新一个安卓应用可以让它出现两次?

为啥编译的 python 正则表达式比较慢?

带字符串的正则表达式:出现两次的字母对[关闭]

Keras LSTM - 为啥“相同”模型和相同权重的结果不同?