代码之家  ›  专栏  ›  技术社区  ›  nw.

正则表达式测试不能决定是真是假(javascript)

  •  4
  • nw.  · 技术社区  · 15 年前

    我在chrome(开发工具)和firefox(firebug)中都有这种行为。注意,regex测试返回交替的真/假值:

    > var re = /.*?\bbl.*\bgr.*/gi;
    undefined
    > re
    /.*?\\bbl.*\\bgr.*/gi
    > re.test("Blue-Green");
    true
    > re.test("Blue-Green");
    false
    > re.test("Blue-Green");
    true
    > re.test("Blue-Green");
    false
    

    但是,测试与文本相同的regex:

    > /.*?\bbl.*\bgr.*/gi.test("Blue-Green");
    true
    > /.*?\bbl.*\bgr.*/gi.test("Blue-Green");
    true
    > /.*?\bbl.*\bgr.*/gi.test("Blue-Green");
    true
    > /.*?\bbl.*\bgr.*/gi.test("Blue-Green");
    true
    

    我无法解释,这使得调试非常困难。有人能解释这种行为吗?

    1 回复  |  直到 15 年前
        1
  •  9
  •   Community CDub    8 年前

    /g (全局)regexps将做到这一点,是的。

    this question .

    当您编写文本时,每次都会得到一个新的regexp对象,因此会丢失 lastIndex 与旧对象关联的状态。