1

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

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+)/);
4

3 回答 3

2

match 函数的结果是一个数组,而不是字符串。所以简单地采取

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

顺便说一句,如果你想要更精确的匹配,你也应该转义点:

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

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

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

但确切的正则表达式将基于您的确切需求,当然,并匹配任何数字(科学记数法?)我建议看看更复杂的正则表达式

于 2012-11-29T16:47:57.573 回答
1

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

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

于 2012-11-29T16:48:22.227 回答
1

尝试以下

var nb = query.match(/\d\.\d+/)[0]; // "1.20"
  • 你需要逃跑.,因为它代表任何角色。
  • 移除捕获组 (\d+) 并且不返回第二个匹配项
  • 添加 [0] 索引以检索匹配项
于 2012-11-29T16:52:19.807 回答