JavaScript 正则表达式 - 提取紧挨单词后面的数字

9

我已经很久没有接触正则表达式了。这个问题很简单,但是我却为它烦恼不已。

我从DOM中获取了如下字符串:"MIN20, MAX40"。我想要使用JavaScript中的正则表达式提取MIN旁边的整数和MAX旁边的整数,并将它们放入分别的变量minmax中。我无法找到一种方法来实现它。

谢谢任何帮助我的人,你将是我的救星!

干杯!

5个回答

18
可以使用:

你可以使用以下代码:

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

JSfiddle链接


1
这对我来说已经足够了。尽管如果需要超过两个值,Tim Down的例子也很好。感谢大家。 - Tom
感谢您为未来的读者指出Tim Down的示例。 - xyhhx

4
我认为这个方案可行:
var matches = "MIN20, MAX40".match(/MIN(\d+), MAX(\d+)/);
var min = matches[1]; 
var max = matches[2];

1
+1!简洁明了(你可以添加一个matches检查来使它更好)。 - jwueller
如果我们这么简单,就不需要正则表达式。我们可以这样做:var str = "MIN20, MAX40", min = str.slice(3, 5), max = str.slice(10, 12); - Tim Down
甚至更简单的是 min = 20, max = 40; :D - user69820
请将您的示例复制到另一个代码编辑器中。Jsfiddle太慢了。 - alexche8

2
以下将从“MIN”和“MAX”后提取数字,并将其保存为整数数组mins和maxes:
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]

0
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"(至少在谷歌浏览器中)。 - thorn0
多奇怪啊...我在FF 3.6.12中尝试了一下,不管怎样codaddict的解决方案是最好的。 - fcalderan

0

这应该能解决问题。

var str='MIN20, MAX40';

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接