【问题标题】:How do I get percentage values from a string with a regular expression?如何使用正则表达式从字符串中获取百分比值?
【发布时间】:2013-10-01 17:57:32
【问题描述】:

如何从这个字符串中获取百分比值但没有百分号?

我有这个字符串,我想去掉百分号的 %s。除了百分号像这样出现之外,我大部分时间都在工作:

"asfd %1.3344 %1.2323 % asdf %".match(/%[0-9.]*/g)

结果:["%1.3344", "%1.2323", "%", "%" ]

我希望结果为 [ 1.3344, 1.2323]

我尝试使用正则表达式向前看,但我得到 ["", "", "", ""]。这是我的尝试:

"asfd %1.3344 %1.2323 % asdf %".match(/(?=%)[0-9.]*/g)

结果:["", "", "", "" ]

【问题讨论】:

  • 试试这个 /(?
  • @Darka:JavaScript 正则表达式不支持lookbehinds。
  • ups 抱歉错过了 javascript
  • 我也在尝试后视路线并收到一条错误消息。看起来它是正确的轨道,但对于错误的技术:)

标签: javascript regex mongodb


【解决方案1】:
"asfd %1.3344 %1.2323 % asdf %".match(/%[0-9.]+/g).map( function (item) { return item.substr(1); })

【讨论】:

    【解决方案2】:

    这里通常的解决方案是将您想要的内容放在一个组中并在循环中使用exec

    var re = /%(\d+(?:\.\d*)?)/g;
    var percentages = [];
    var m;
    
    while(m = re.exec(str)) {
        percentages.push(+m[1]);
    }
    

    还要注意限制性更强的正则表达式:至少一位数字,后跟可选的小数分隔符,后跟任意位数。

    【讨论】:

      【解决方案3】:

      我相信这也应该有效。

      JavaScript:

      var str = "asfd %1.3344 %1.2323 % asdf %",
          arr = [];
      
      str.replace(/%(\d+(?:\.\d*)?)/g, function (a, b) {
          arr.push(b);
      });
      
      console.log(arr);
      

      jsFiddle

      【讨论】:

      • 谢谢提醒,第二个参数可以是函数;)
      【解决方案4】:

      嘿,我也检查并找到了这个解决方案:

      var str="asfd %1.3344 %1.2323 % asdf %";
      var patt=/%([0-9\.]+)/g;
      var result;
      while(null != (result = patt.exec(str))){
          document.write(result[1] + '<br />');
      } 
      

      【讨论】:

        【解决方案5】:

        以下正则表达式接缝在没有循环的情况下可以很好地工作。

        var str = "asfd %1.3344 %1.2323 % asdf %", resultsArray;
        resultsArray = str.replace(/(^[^%]+)|[^\d .]|( (?!%\d))/g,'').split(' ');
        

        Split String 的方法会返回一个数组

        如果您在输入中可能遇到其他类型的模式(例如,如果 2 个点一个接一个地出现“asfd %1.. %1.23”或其他),请告诉我,以便我们修改正则表达式相应地。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-13
          • 1970-01-01
          • 2021-09-01
          • 2016-10-30
          • 2023-03-23
          相关资源
          最近更新 更多