我想提取正好在文本kcal
之前的数字。我怎么能这样做?
foo = "1119 kJ / 266 kcal";
// want to return: 266
答案 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);
}