2017-01-03 35 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/