JS:从字符串中提取数字,即在特定单词之前

时间:2014-11-21 00:55:22

标签: javascript jquery regex

我想提取正好在文本kcal之前的数字。我怎么能这样做?

foo = "1119 kJ / 266 kcal";

// want to return: 266

http://regex101.com/r/tZ3fH8/1

2 个答案:

答案 0 :(得分:2)

您可以使用capturing组来匹配和捕获该字词前面的数字。以下正则表达式将匹配/捕获任何字符:数字,."一个或多个"时间前面是可选的空格,后跟单词" kcal"。

var r = '1119 kJ / 266 kcal'.match(/([\d.]+) *kcal/)[1];
if (r)
    console.log(r); //=> "266"

答案 1 :(得分:0)

正则表达式更简单,更清洁,但如果它不适合你,那么这是另一条路线。你可以用“/”分割你的字符串,然后用结果对再分割它:

foo = "1119 kJ / 266 kcal";

pairs = foo.split("/");
res = pairs[1]; //get second pair

var res = foo.split(" "); //spit pair by space.

if (isNumber(res[0]) {
    alert("It's a number!");
}

function isNumber(n) {
    //must test for both conditions 
    return !isNaN(parseFloat(n)) && isFinite(n);
}