代码之家  ›  专栏  ›  技术社区  ›  Argyll

在这种情况下,为什么带有全局标志的.match()在返回匹配后返回null?

  •  1
  • Argyll  · 技术社区  · 3 年前

    我正在尝试对由字母和空格组成的单词进行简单的正则表达式匹配。示例:

    console.log('a abc $'.match(/\b[A-Za-z ]*\b/g))        // expect 'a abc' but get ['a abc',]
    console.log('a abc $abcd'.match(/\b[A-Za-z ]*\b/g))    // expect ['a abc','abcd'] but get ['a abc',,'abcd',]
    

    in the documentation 适合我的需要。为什么在上述示例中,全局标志在每次匹配后都返回null?

    (我在googleapps脚本中运行了这个片段——但是Apps脚本应该复制Javascript的行为?)

    1 回复  |  直到 3 年前
        1
  •  0
  •   Unmitigated    3 年前

    * 匹配零个或多个字符。使用 + 而是匹配一个或多个特定字符(或一组字符)。

    console.log('a abc $'.match(/\b[A-Za-z ]+\b/g))
    console.log('a abc $abcd'.match(/\b[A-Za-z ]+\b/g))