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

时间:2014-11-03 01:56:51

标签: javascript

我有这种字符串:

COMC1.20DI

我需要提取,在这种情况下为“1.20”,但数字可以包含小数。我该怎么做?我还需要获得数字的开始和结束位置。

对于起始位置,我找到了

value.search(/\d/);

但我无法获得任何代码来获取该号码的最后位置。

我该怎么做?

4 个答案:

答案 0 :(得分:3)

当我尝试时,这对我有用:

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

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

答案 1 :(得分:-1)

对于提取,您可以使用此RegEx:

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

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

答案 2 :(得分:-1)

您可以尝试使用此代码段。

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+)?。这意味着它不会错误地检查其他数字和期间格式(即&#34; 2.3.1&#34;,&#34; .123&#34;或&#34; 5.& #34;)并且只会匹配整数或小数(\d+与可选\.\d+

JSFiddle 上查看。

答案 3 :(得分:-1)

   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