2010-11-16 29 views
8

Đã lâu rồi kể từ khi tôi chạm vào biểu thức chính quy. Nó đơn giản nhưng tôi kéo tóc của tôi ra ngoài.Biểu thức chính quy JavaScript - Trích xuất số từ bên cạnh từ

Tôi có chuỗi như sau mà tôi nhận được từ DOM "MIN20, MAX40". Tôi muốn có thể sử dụng regex trong JavaScript để trích xuất số nguyên bên cạnh MIN và số nguyên bên cạnh MAX và được đưa vào các biến riêng lẻ minmax. Tôi không thể tìm ra cách để làm điều đó.

Nhờ ai đã giúp tôi, bạn sẽ là người tiết kiệm cuộc sống!

Cheers

Trả lời

15

Bạn có thể sử dụng:

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

JSfiddle link

+1

Điều này thực hiện công việc cho tôi. Mặc dù ví dụ của Tim Down là tốt nếu cần nhiều hơn hai giá trị. Cảm ơn tất cả các bạn – Tom

+0

Cảm ơn bạn đã chỉ ra ví dụ của Tim Down cho người đọc trong tương lai – 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

Nó không dẫn vào một mảng. typeof value == "string" (ít nhất trong Google Chrome) – thorn

+0

cách kỳ lạ ... Tôi đã thử trong FF 3.6.12, dù sao giải pháp codaddict là tốt nhất –

2

Sau đây sẽ trích số sau "MIN" và "MAX" vào mảng các số nguyên được gọi là 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

này nên làm các trick.

var str='MIN20, MAX40'; 

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

Tôi nghĩ rằng điều này sẽ làm việc:

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

+1! Sạch sẽ và đơn giản (bạn có thể thêm một kiểm tra cho 'trận đấu' để làm cho nó thậm chí còn tốt hơn). – jwueller

+0

Nếu chúng ta thực hiện điều này đơn giản, không cần biểu thức chính quy. Chúng ta chỉ có thể làm 'var str =" MIN20, MAX40 ", min = str.slice (3, 5), max = str.slice (10, 12);' –

+0

hoặc thậm chí đơn giản hơn 'min = 20, max = 40; ': D –

Các vấn đề liên quan