【问题标题】:Regex Matching - Content within brackets正则表达式匹配 - 括号内的内容
【发布时间】:2014-11-15 16:18:09
【问题描述】:

这是一个快速的问题,我只是不知道很多正则表达式技巧,也找不到关于这个确切点的文档:

假设我有字符串:

'I know [foo] and [bar] about Regex'

我想做一个 JS Regex 模式,将每个括号封装成一个数组。结果:

['[foo]', '[bar]']

我目前有:

str.match(/\[(.*)\]/g);

但这会返回:

'[foo] and [bar]'

谢谢。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:
    str.match(/\[(.*?)\]/g);
    

    使用? 修饰符使* 量词不贪婪。非贪婪量词将匹配可能的 最短 字符串,而不是最长的字符串,这是默认值。

    【讨论】:

      【解决方案2】:

      改用这个:

      var str = 'I know [foo] and [bar] about Regex';
      str.match(/\[([^\[\]]*)\]/g);
      

      由于(.*),您的正则表达式部分错误,这使您的模式允许[] 之间的任何 字符,其中包括[]。 p>

      【讨论】:

        【解决方案3】:

        试试

        var array = 'I know [foo] and [bar] about Regex'.match(/(\[[^\]]+\])/g)
        

        【讨论】:

          【解决方案4】:

          改用这个:

          \\[[^\\]]+\\]
          

          由于(.*),您的正则表达式部分错误,这使您的模式允许[] 之间的任何字符,其中包括[]

          【讨论】:

          猜你喜欢
          • 2016-02-13
          • 2011-09-06
          • 2012-01-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-18
          • 1970-01-01
          相关资源
          最近更新 更多