2010-11-16 57 views
8

自從我觸及正則表達式以來,已經很長時間了。這很簡單,但我把頭髮拉出來。JavaScript正則表達式 - 從單詞旁邊提取數字

我有一個字符串,如下所示,我從DOM "MIN20, MAX40"得到。我希望能夠在JavaScript中使用正則表達式來提取MIN旁邊的整數和MAX旁邊的整數,並將其放入單獨的變量minmax。我無法想出辦法。

感謝誰曾幫助我,你將成爲一名救星!

乾杯

回答

15

您可以使用:

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

JSfiddle link

+1

這是爲我做的工作。雖然Tim Down的例子很好,如果需要超過兩個值。感謝大家 – Tom 2010-11-16 11:34:19

+0

感謝您指出Tim Down爲未來的讀者舉例 – Martin 2014-03-14 19:19:39

0
var str = "MIN20, MAX40"; 
value = str.replace(/^MIN(\d+),\sMAX(\d+)$/, function(s, min, max) { 
    return [min, max] 
}); 

console.log(value); // array 
+0

它不會導致到一個數組。 typeof value ==「string」(至少在谷歌瀏覽器中) – thorn 2010-11-16 11:28:03

+0

多麼奇怪...我在FF 3.6.12試過,反正codaddict解決方案是最好的 – 2010-11-16 11:37:18

2

下面將提取號碼下面的 「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] 
0

這應該做的伎倆。

var str='MIN20, MAX40'; 

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

,我認爲這會工作:

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

+1!乾淨和簡單(你可以添加一個檢查'匹配',使其更好)。 – jwueller 2010-11-16 11:24:19

+0

如果我們這麼簡單,就不需要正則表達式。我們可以做'var str =「MIN20,MAX40」,min = str.slice(3,5),max = str.slice(10,12);' – 2010-11-16 15:30:42

+0

或甚至更簡單'min = 20,max = 40; ':D – 2010-11-16 15:59:29