提取字符串中带小数的数字(Javascript)

提取字符串中带小数的数字(Javascript),javascript,Javascript,我有这样的绳子: COMC1.20DI 在本例中,我需要提取“1.20”,但数字可以有小数,也可以没有小数。我怎么做?我还需要得到号码的起始和结束位置 对于起始位置,我发现 value.search(/\d/); 但是我找不到任何代码来获取号码的最后位置 我如何才能做到这一点?当我尝试时,这对我很有效: var value = 'COMC120DI'; alert(value.match(/[\d\.]+/g)[0]); 返回“120”。如果字符串中有多个数字,它将只返回第一个数字

我有这样的绳子:

COMC1.20DI
在本例中,我需要提取“1.20”,但数字可以有小数,也可以没有小数。我怎么做?我还需要得到号码的起始和结束位置

对于起始位置,我发现

value.search(/\d/);
但是我找不到任何代码来获取号码的最后位置


我如何才能做到这一点?

当我尝试时,这对我很有效:

var value = 'COMC120DI';
alert(value.match(/[\d\.]+/g)[0]);    

返回“120”。如果字符串中有多个数字,它将只返回第一个数字。不确定这是否是你想要的。此外,如果有多个小数位,它也会返回这些小数位

对于提取,u可以使用此正则表达式:

^(?<START>.*?)(?<NUMBER>[0-9]{1,}((\.|,)?[0-9]{1,})?)(?<END>.*?)$
^(?.*?([0-9]{1,}(\.|,)?[0-9]{1,})(?*?)$

组“开始”将保存数字之前的所有内容,“数字”将保存任何数字(1 | 1,00 | 1.0),最后“结束”将保存字符串的其余部分(数字后面)。在你得到这3个片段后,你可以计算开始和结束位置。

你可以试试这个片段

var match = text.match(/\d+(?:\.\d+)?/);
if (match) {
    var result = 'Found ' + match[0] + ' on position ' + match.index + ' to ' + (match.index + match[0].length));
}
请注意,我使用的正则表达式是
\d+(?:\。\d+)
。这意味着它不会错误地检查其他数字和周期格式(即“2.3.1”、“0.123”或“5”),并且只匹配整数或小数(即
\d+
和可选的
\。\d+

请在上查看

   var decimal="sdfdfddff34561.20dfgadf234";

   var decimalStart=decimal.slice(decimal.search(/(\d+)/));
   var decimalEnd=decimalStart.search(/[^.0-9]/);
   var ExtractedNumber= decimalStart.slice(0,decimalEnd);

   console.log(ExtractedNumber);

在控制台中显示:34561.20

小数是否始终只有百分之一百?小数是否始终位于字符串的中心?或者它可能位于任何位置?