提取字符串中带小数的数字(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小数是否始终只有百分之一百?小数是否始终位于字符串的中心?或者它可能位于任何位置?