从String获取数字(十进制数字)

时间:2016-12-06 02:45:58

标签: javascript jquery regex string

我看到有人已经问过这个问题,但结果并非真的是数字为十进制数字。

示例:

var str = "textsometext13.523 after text";

然后,如果我使用str.replace(/[^0-9]/gi, '');

它将返回13523而不是13.523

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

非常感谢。

5 个答案:

答案 0 :(得分:3)

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

str.match(/\d+\.\d+|\d+/g)

答案 1 :(得分:3)

如果你知道你的输入字符串只包含一个数字而在最后没有句号,那么只需更新你的正则表达式,在要保留的字符列表中加入.

/[^0-9.]/gi

但是如果你需要允许输入如下:

"text 123.12 text 13"
"The numbers are 132.12, 144.11, and 123.1."

...那么你应该使用.match() method,正确的正则表达式将返回匹配数字的数组(如果没有匹配则返回null):

var results = input.match(/\d+(?:\.\d+)?/g);

即匹配一个或多个数字\d+,可选地后跟小数\.和一个或多个数字\d+

演示:

console.log( "text 123.12 text".match(/\d+(?:\.\d+)?/g) );
console.log( "The numbers are 132.12, 5, and 123.1.".match(/\d+(?:\.\d+)?/g) );
console.log( "No numbers".match(/\d+(?:\.\d+)?/g) );

答案 2 :(得分:1)

只需像/\d+(?:\.\d+)?/g一样使用:

console.log("textsometext13.523 after text".match(/\d+(?:\.\d+)?/g,""))

替代,它的反向过程替换[a-z]相同的东西将追加

console.log("textsometext13.523 after text".replace(/[a-z]/g,""))

答案 3 :(得分:1)

你可以尝试这个:

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

答案 4 :(得分:1)

这个正则表达式应匹配任何数字,无论它是否有小数:

sAsyncQueryHandler.startDelete(0, null, MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                MediaStore.Images.Media.DATA + "=?", new String[]{pathname});



/(\d*\.?\d*)/g

var btn1 = document.getElementById('btn1');
var inp1 = document.getElementById('inp1');
var out1 = document.getElementById('out1');


btn1.onclick = function() {
  var str = inp1.value
  var res = str.match(/\d*\.?\d*/g);
  out1.innerHTML = res;
}