【问题标题】:Javascript Regex - Get All string that has square brackets []Javascript Regex - 获取所有带有方括号 [] 的字符串
【发布时间】:2014-11-18 03:20:39
【问题描述】:

我在下面有字符串数据:

var data = "somestring[a=0]what[b-c=twelve]----[def=one-2]test"

我需要获取所有包含方括号[] 的字符串。这就是我想要的结果。

["[a=0]", "[b-c=twelve]", "[def=one-2]"]

我尝试过使用正则表达式/\[(.*?)\]/,但我得到的是只有第一个数组元素是正确的,接下来的元素基本上是相同的值但没有方括号。

data.match(/\[(.*?)\]/);
// result => ["[a=0]", "a=0"]

我应该使用什么正则表达式来获得我想要的结果?提前谢谢你。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    您想使用g(全局)修饰符来查找所有匹配项。由于括号包含在匹配结果中,因此您不需要使用捕获组,而是使用否定来消除回溯量。

    someVar.match(/\[[^\]]*]/g);
    

    【讨论】:

      【解决方案2】:
      1. /\[(.*?)\]/中,*?表示懒惰,匹配尽可能少的内容。
      2. 您真正想要的是内容中的所有匹配项。尝试修饰符g
      3. 试试这个,http://regex101.com/r/aD6cM8/1。任何匹配都以[ 开头,以] 结尾,但不允许[] 介于两者之间。

      someVar.match(/\[([^\[\]]*)\]/g)

      【讨论】:

        【解决方案3】:

        您只需将g 开关添加到您的正则表达式:

        someVar.match(/\[(.*?)\]/); // result => ["[a=0]", "a=0"]
        

        结果

        [ "[a=0]", "[b-c=twelve]", "[def=one-2]" ]
        

        【讨论】:

          【解决方案4】:

          您的正则表达式是正确的,只需给它添加 g 后缀即可使其全局化:

          someVar.match(/\[(.*?)\]/g);

          这里有更多信息:http://www.w3schools.com/jsref/jsref_regexp_g.asp

          【讨论】:

            猜你喜欢
            • 2012-06-30
            • 1970-01-01
            • 1970-01-01
            • 2021-12-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-04-24
            相关资源
            最近更新 更多