【问题标题】:JavaScript Regular Expression - Extract number from next to wordJavaScript 正则表达式 - 从单词旁边提取数字
【发布时间】:2010-11-16 11:13:06
【问题描述】:

很久没接触正则表达式了。这很简单,但我正在把头发拉出来。

我有一个从 DOM "MIN20, MAX40" 得到的字符串,如下所示。我希望能够在 JavaScript 中使用正则表达式来提取 MIN 旁边的整数和 MAX 旁边的整数,并将其放入单独的变量 minmax 中。我想不出办法。

感谢曾经帮助过我的人,您将成为救生员!

干杯

【问题讨论】:

    标签: javascript regex string


    【解决方案1】:

    你可以使用:

    var input   = "MIN20, MAX40";
    var matches = input.match(/MIN(\d+),\s*MAX(\d+)/);
    var min = matches[1];
    var max = matches[2];
    

    JSfiddle link

    【讨论】:

    • 这对我有用。虽然如果需要两个以上的值,Tim Down 的示例很好。谢谢大家
    • 感谢您为未来的读者指出 Tim Down 的例子
    【解决方案2】:

    我认为这可行:

    var matches = "MIN20, MAX40".match(/MIN(\d+), MAX(\d+)/);
    var min = matches[1]; 
    var max = matches[2];
    

    【讨论】:

    • +1!简洁明了(您可以添加对 matches 的检查以使其更好)。
    • 如果我们这么简单,就不需要正则表达式了。我们可以做var str = "MIN20, MAX40", min = str.slice(3, 5), max = str.slice(10, 12);
    • 或更简单的min = 20, max = 40; :D
    • 请将您的示例复制到另一个小提琴。 Jsfiddle 慢得要命。
    【解决方案3】:

    以下将提取“MIN”和“MAX”之后的数字到整数数组中,称为minsmaxes

    var mins = [], maxes = [], result, arr, num;
    var str = "MIN20, MAX40, MIN50";
    
    while ( (result = /(MIN|MAX)(\d+)/g.exec(str)) ) {
        arr = (result[1] == "MIN") ? mins : maxes; 
        num = parseInt(result[2]);
        arr.push(num);
    }
    
    // mins: [20, 50]
    // maxes: [40]
    

    【讨论】:

      【解决方案4】:
      var str = "MIN20, MAX40";
      value = str.replace(/^MIN(\d+),\sMAX(\d+)$/, function(s, min, max) {
          return [min, max]
      });
      
      console.log(value); // array
      

      【讨论】:

      • 它不会生成数组。 typeof value == "string"(至少在谷歌浏览器中)
      • 多么奇怪...我在 FF 3.6.12 中尝试过,无论如何 codaddict 解决方案是最好的
      【解决方案5】:

      这应该可以解决问题。

      var str='MIN20, MAX40';
      
      min = str.match(/MIN(\d+),/)[1];
      max = str.match(/MAX(\d+)$/)[1];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多