【问题标题】:Strange Chrome JavaScript Expression Behavior [duplicate]奇怪的 Chrome JavaScript 表达式行为 [重复]
【发布时间】:2020-06-27 20:21:28
【问题描述】:

我在 chrome JavaScript 控制台中遇到了一些奇怪的行为。这怎么可能?

开始是5

字是/[\w$]+/g

z 是"z"

start && word.test(z)
=> false
(start && word.test(z))
=> true
start && (word.test(z))
=> false

【问题讨论】:

  • word 的正则表达式是什么? Does it use the global flag?
  • 什么是价值观?
  • 已编辑以包含额外信息
  • "word is /[\w$]+/g" - 在这种情况下检查我发布的链接。全局正则表达式是有状态的 - 多次运行 .test 会产生不同的结果。
  • 好吧,哇,这真是令人惊讶。我自己来回答。

标签: javascript google-chrome google-developer-tools


【解决方案1】:

这与RegExp global flag 有关。感谢@VLAZ 发现这一点。

具体来说,全局标志是有状态的。问题是代码在同一个会话中运行了多次,但 RegExp 的状态正在改变。

看起来全局有状态正则表达式的想法是它永远不会匹配字符串的同一部分两次。

【讨论】:

    猜你喜欢
    • 2014-12-26
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 2018-06-03
    相关资源
    最近更新 更多