Javascript 从字符串中获取数字(十进制数字)

Javascript 从字符串中获取数字(十进制数字),javascript,jquery,regex,string,Javascript,Jquery,Regex,String,我看到有人已经问过这个问题,但结果并不是真的在数字是十进制数字的情况下 例如: var str = "textsometext13.523 after text"; 如果我使用str.replace/[^0-9]/gi 它将返回13523而不是13.523 我如何使用新的正则表达式来获取它 非常感谢。您可以使用RegExp/\d+\.\d+\d+/g来匹配后跟的数字。后跟数字的字符,或一个或多个数字 str.match(/\d+\.\d+|\d+/g) 只需像这样使用/\d+?:\。\d+?

我看到有人已经问过这个问题,但结果并不是真的在数字是十进制数字的情况下

例如:

var str = "textsometext13.523 after text";
如果我使用str.replace/[^0-9]/gi

它将返回13523而不是13.523

我如何使用新的正则表达式来获取它

非常感谢。

您可以使用RegExp/\d+\.\d+\d+/g来匹配后跟的数字。后跟数字的字符,或一个或多个数字

str.match(/\d+\.\d+|\d+/g)
只需像这样使用/\d+?:\。\d+?/g: console.logtextsometext13.523在text.match/\d+?:\。\d+?/g之后,您可以尝试以下方法:

var string = "textsometext13.523 after text";
var number =  string.match(/[\d\.]+/).toString();
var num = number.split('.');
alert(num[1]); //display the numbers after the period(.) symbol

如果您知道您的输入字符串将只包含一个数字,并且末尾没有句号,那么只需更新您的正则表达式以包含一个数字。在要保留的字符列表中:

/[^0-9.]/gi
但如果您需要考虑以下输入:

"text 123.12 text 13"
"The numbers are 132.12, 144.11, and 123.1."
…然后您应该使用,它与正确的正则表达式一起将返回匹配的数字数组,如果没有匹配,则返回null:

var results = input.match(/\d+(?:\.\d+)?/g);
也就是说,匹配一个或多个数字\d+,可以选择后跟一个小数\。和一个或多个数字\d+

演示:

console.log text 123.12 text.match/\d+?:\。\d+?/g; console.log数字分别为132.12、5和123.1..match/\d+?:\。\d+?/g;
console.log No number.match/\d+?:\。\d+?/g 此正则表达式应与任何数字匹配,无论其是否具有十进制:

一小条 var btn1=document.getElementById'btn1'; var inp1=document.getElementById'inp1'; var out1=document.getElementById'out1'; btn1.onclick=函数{ var str=inp1.value var res=str.match/\d*\.?\d*/g; out1.innerHTML=res; }
添加你的正则表达式/[^0-9.]/gi-但请注意,进行全局替换意味着,如果输入是文本13.523文本12,则输出将是13.52312。。。还要注意,这是一个JavaScript问题,而不是jQuery问题。@nnnnnn做什么。我的意思是regex@guradio-意思是字面意思。字符,因为它位于[]之内。对。我想这对我有帮助。谢谢请给出你的答案以给出最好的答案。如果两个数字按空格或文本分开,是否可能得到两个或更多的数字?我认为反向处理更容易控制台。文本后面是logtextsometext13.523。替换/[a-z]/g,在第一个代码段中。表示任何字符,您需要对其进行转义:\。如果字符串包含字母和数字以外的字符怎么办?这是一个号码:13.523。谢谢…@nnnnnn第一个代码段使用了一种特殊的模式来避免that@hwnd两种方法都返回相同的结果,是吗?fwiw当前方法保存两个字符。
/(\d*\.?\d*)/g