【问题标题】:RegEx extract all real numbers from a string [duplicate]RegEx从字符串中提取所有实数[重复]
【发布时间】:2014-02-13 10:04:44
【问题描述】:

JavaScript 中的这个正则表达式只返回给定字符串中的第一个实数,我期望一个两个数组,因为我正在使用 /g。我的错在哪里?

/[-+]?[0-9]*\.?[0-9]+/g.exec("-8.075090 -35.893450( descr)")

返回:

["-8.075090"]

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    试试这个代码:

    var input = "-8.075090 -35.893450( descr)";
    var ptrn = /[-+]?[0-9]*\.?[0-9]+/g;
    var match;
    while ((match = ptrn.exec(input)) != null) {
        alert(match);
    }
    

    演示

    http://jsfiddle.net/kCm4z/

    讨论

    exec 方法只返回 first 匹配。必须重复调用它,直到它返回 null 以获取所有匹配项。

    或者,正则表达式可以这样写:

    /[-+]?\d*\.?\d+/g
    

    【讨论】:

      【解决方案2】:

      String.prototype.match 为您提供所有匹配项:

      var r = /[-+]?[0-9]*\.?[0-9]+/g
      var s = "-8.075090 -35.893450( descr)"
      
      console.log(s.match(r))
      //=> ["-8.075090", "-35.893450"]
      

      【讨论】:

      • 超级。亚历克斯回答了为什么exec 方法对我不起作用。但出于实际目的,String.match 是我所需要的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-24
      • 2020-06-10
      • 1970-01-01
      • 2019-10-13
      • 2011-09-13
      相关资源
      最近更新 更多