【问题标题】:javascript pattern matching only returns first hit [duplicate]javascript模式匹配只返回第一个命中[重复]
【发布时间】:2013-07-25 20:42:20
【问题描述】:

我正在尝试在 Javascript 中匹配一些字符串,例如“[932A]”。精简版是:

'[625A] [625B] [625C]'.match(/\[[0-9]*[A-Z]+\]/)

正在返回一个包含 1 个元素的数组,即第一个命中。原因很明显吗?

【问题讨论】:

标签: javascript regex


【解决方案1】:

您需要使用最终的g 术语进行全局正则表达式

 '[625A] [625B] [625C]'.match(/[[0-9]*[A-Z]+]/g)

【讨论】:

    【解决方案2】:

    您需要指定要使用全局标志获取所有匹配项。例如(注意结尾 g):

    /[0-9]/g
    

    当方括号不用于分隔字符类时,您还需要转义方括号。例如:

    /\[[0-9]+\]/
    

    匹配方括号内的一个或多个数字。

    【讨论】:

    • 我很确定额外的反斜杠是必要的,因为它们不包含字符类......它们包含确保外部方括号是普通字符的其他语法。
    【解决方案3】:

    是的,您只需在正则表达式中添加全局标志。这是通过在其末尾添加一个“g”来完成的。您生成的正则表达式应如下所示:

    /[[0-9]*[A-Z]+]/g
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      相关资源
      最近更新 更多