2017-01-03 17 views
-4

文字列の一部を解析するためにJSフレンドリでなければならない正規表現を使用しようとしています。 Chrome用にwebscraper.io拡張機能を使用してスクレーパーを構築しています。しかし、私は問題を抱えています。私は最小寿命と最大寿命が必要ですが、 "Life Span:10 to 12 years"JSフレンドリ正規表現で文字列を解析する

正規表現を使用して分を "10"、最大を "12"に戻すにはどうすればよいですか?できるだけシンプルにする必要があります。理想的には、それぞれ別々のセレクタを実行する必要があります。だからそれは2つの異なる正規表現になります。私は\ 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/

関連する問題