【问题标题】: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

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,这对我来说是新的。
    猜你喜欢
    • 1970-01-01
    • 2021-07-03
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    相关资源
    最近更新 更多