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

正则表达式在cretin字符后获取多个数字

  •  0
  • hretic  · 技术社区  · 7 年前

    我有这段文字

    transaction A2999 num 111 from b123 c 6666666 t d 7777
    

    c t d (请注意字符前后的空格) 6666666 7777

     str.match(/\ c (\d+)/);
    

    这让我

    Array(2)
    0: " c 6666666"
    1: "6666666"
    

    我想我可以为每个数字运行相同的正则表达式两次,并获取数组中的最后一列,但我不确定这是最干净的方法。。。对我来说似乎很没意思(说到regex我也是)

    4 回复  |  直到 7 年前
        1
  •  1
  •   Yves Kipondo    7 年前
    (\d+)\st\sd\s(\d+)$
    

    var text = "transaction A2999 num 111 from b123 c 6666666 t d 7777"
    var regex = /(\d+)\st\sd\s(\d+)$/
    
    matches = text.match(regex);
    console.log(matches);
    // matches[1] = 6666666 
    // matches[2] = 7777
        2
  •  1
  •   Pushpesh Kumar Rajwanshi    7 年前

    ^.*\s+c\s+(\d+)\s+(?:t\s+d)\s+(\d+)$
    

    在这里玩regex,

    https://regex101.com/r/Ww9ZaR/1

        3
  •  1
  •   3limin4t0r    7 年前

    改变 c 在正则表达式中 (?:c|t d) / (?:c|t d) (\d+)/ .

    这个 (?:...) (...) 但没有捕捉到结果。因此,这个群体也被称为 non-capturing group .

    我还设置了全球标志( g RegExp exec method 在一个 虽然 声明。

    var str = 'transaction A2999 num 111 from b123 c 6666666 t d 7777',
        regexp = /\ (?:c|t d) (\d+)/g,
        match;
        
    while (match = regexp.exec(str)) {
        console.log(match);
    }
        4
  •  0
  •   nitzien    7 年前

    试试这个。

    str.match(/\ [cd] (\d+)/);