我有这种字符串:
COMC1.20DI
我需要提取,在这种情况下为“1.20”,但数字可以包含小数。我该怎么做?我还需要获得数字的开始和结束位置。
对于起始位置,我找到了
value.search(/\d/);
但我无法获得任何代码来获取该号码的最后位置。
我该怎么做?
答案 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