2010-11-16 13 views
8

był długi czas odkąd dotknął wyrażeń regularnych. To proste, ale wyciągam z niego włosy.JavaScript Regular Expression - liczba Wyciąg z obok wyrazu

Mam ciąg w następujący sposób, że dostanę od DOM "MIN20, MAX40". Chcę, aby móc użyć wyrażenia regularnego w JavaScript, aby wyodrębnić całkowitą obok MIN i całkowitą obok MAX i umieścić w oddzielnych zmiennych min i max. Nie potrafię tego zrobić.

Dzięki kto kiedykolwiek mi pomaga, będzie wygaszacz życia!

Cheers

Odpowiedz

15

Można użyć:

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

JSfiddle link

+1

To robi dla mnie zadanie. Chociaż przykład Tim Down jest dobry, jeśli potrzeba więcej niż dwóch wartości. Dzięki tobie wszystkie – Tom

+0

Dzięki za wskazanie przykładu Tim Down dla przyszłych czytelników – Martin

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

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

To nie prowadzi do tablicy. typeof value == "string" (przynajmniej w Google Chrome) – thorn

+0

jak dziwacznie ... próbowałem w FF 3.6.12, w każdym razie rozwiązanie kodaddict jest najlepsze –

2

Następujące będzie wyodrębnić następujące numery "MIN" i "MAX" do tablic liczb zwanych mins i 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

To powinno załatwić sprawę.

var str='MIN20, MAX40'; 

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

myślę, że to będzie działać:

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

+1! Czyste i proste (możesz dodać "zapałki", aby było jeszcze lepiej). – jwueller

+0

Jeśli idziemy tak prosto, nie ma potrzeby regularnego wyrażania. Możemy po prostu zrobić 'var str =" MIN20, MAX40 ", min = str.slice (3, 5), max = str.slice (10, 12),' –

+0

lub jeszcze prostsze 'min = 20, max = 40; ': D –

Powiązane problemy