从字符串中提取小数

时间:2012-11-29 16:46:29

标签: javascript regex

我有一个看起来像这样的字符串

Hey this is my 1.20 string

我正试图从中提取1.20

最好的方法是什么?

我尝试过这样的事情,但我得到1.20,20的价值,而不仅仅是1.20

var query = $(".query_time").html();
var matches = query.match(/\d.(\d+)/);

3 个答案:

答案 0 :(得分:2)

the match function的结果是数组,而不是字符串。所以,只需采取

var nb = query.match(/\d.(\d+)/)[0];
顺便说一句,如果你想要更精确的匹配,你也应该逃避点:

var nb = query.match(/\d\.(\d+)/)[0];

或者如果你想接受逗号(取决于语言):

var nb = query.match(/\d[\.,](\d+)/)[0];

但确切的正则表达式将基于您的确切需求,当然还要匹配任何数字(科学记数法?)我建议您查看at more complex regex

答案 1 :(得分:1)

matches的值实际上是[ "1.20", "20" ](这是一个数组)。如果你打印它,它将被转换为一个字符串,因此1.20,20

String.match返回null或匹配数组,其中第一个索引是完全匹配的部分,然后是您想要的任何部分。所以你想要的价值是matches[0]

答案 2 :(得分:1)

尝试以下

var nb = query.match(/\d\.\d+/)[0]; // "1.20"
  • 你需要逃避.,因为它代表任何角色。
  • 删除捕获组(\ d +)并且不返回第二个匹配
  • 添加[0]索引以检索匹配