【问题标题】:regex to get all number from a string? [duplicate]正则表达式从字符串中获取所有数字? [复制]
【发布时间】:2017-10-11 03:33:51
【问题描述】:

我有一个这样的字符串:

AAAA 1 BBBB 2

我想获取所有的数字并返回结果:12

我试过\d,但它只得到第一个数字。

总之,我想按顺序从一个字符串中获取所有数字,然后将其组合成一个新数字。

【问题讨论】:

  • 使用这个var result = 'AAAA 1 BBBB 2'.match(/\d+/g);
  • 返回一个“数组”,@HassanImam
  • @JaromandaX 是的,之后 OP 必须使用 join('')

标签: javascript regex


【解决方案1】:

您可以使用/\d+/g 从字符串中提取所有数字,然后加入结果以获取您的新数字。

var result = 'AAAA 1 BBBB 2'.match(/\d+/g);
console.log(result.join(''));

【讨论】:

    【解决方案2】:

    我认为只需从字符串中删除所有非数字数字即可满足您的问题。然后,您将把所有数字夹在一起。

    var input = 'AAAA 1 BBBB 2';
    input = input.replace(/[^0-9]/g, '');
    console.log(input);

    【讨论】:

    • 这是一个不错的方法!太好了!
    • [^0-9] == \D 不是吗?我会改用.replace(/\D+/g, ''):p
    【解决方案3】:

    只需检查此代码,我希望它会满足您的条件。

    <script>
    function myFunction() {
        var str = "AAAA 1 BBBB 2 CCCCC 6 asghj6adcgf 7"; 
        var patt1 = /\d+/g;
        var result = str.match(patt1);
        document.getElementById("demo").innerHTML = result;
    }
    </script>
    

    【讨论】:

      【解决方案4】:

      您可以使用括号进行分组(\d)并多次执行,直到没有匹配到任何内容。

      const regex = /(\d)/g,
          str = 'AAAA 1 BBBB 2'
      
      let match
      while(match = regex.exec(str)) {
          console.log(match[0])
      }
      

      结果

      1
      2
      

      【讨论】:

        猜你喜欢
        • 2014-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多