2017-01-03 34 views
-4

我想用正則表達式來解析字符串的部分。我使用Chrome的webscraper.io擴展程序構建了一個刮板。但我遇到了麻煩。我需要一個最小和最大壽命,但他們在一個字符串「壽命:10至12年」用JS友好的正則表達式解析字符串

如何使用正則表達式返回「10」的最小和另一個返回「12」的最大值?需要儘可能簡單。理想情況下,我需要爲每個運行一個單獨的選擇器。所以這將是兩個不同的正則表達式。我可以用\ d +來抓住10,但我不知道如何隔離字符串中的最後一個數字。任何幫助是極大的讚賞!

回答

0

要從String獲得所有數字,您可以使用\d+。因此可以用一個while循環的結果添加到一個數組,並獲得它們的最小/最大值:

實施例1個 - 使用函數

var min; 
var max; 
var text = "Being under 18 may require parental signature. " 
     + "You must be at least 16 years in older to apply"; 

function getMinAndMax(string){ 
    var p = RegExp("\\d+", "g"), 

    match, results = []; 

    while (match = p.exec(string)) 
     results.push(match[0]); // [18, 16] 

    return [Math.min.apply(null, results), // 16 
    Math.max.apply(null, results)];  // 18 
} 

var ages = getMinAndMax(text); // [16, 18] 
console.log("Min: " + ages[0]); 
console.log("Max: " + ages[1]); 

https://jsfiddle.net/oro4djpq/

實施例2 - 直銷

var p = RegExp("\\d+", "g"), 
text = "Life Span: 10 to 12 years", 
match, results = []; 

while (match = p.exec(text)) 
    results.push(match[0]); // [10, 12] 

console.log("Min: " + Math.min.apply(null, results)); // [10] 
console.log("Max: " + Math.max.apply(null, results)); // [12] 

https://jsfiddle.net/rzo31teb/