我看到有人已经问过这个问题,但结果并非真的是数字为十进制数字。
示例:
var str = "textsometext13.523 after text";
然后,如果我使用str.replace(/[^0-9]/gi, '');
它将返回13523
而不是13.523
我如何使用新的正则表达式来获取它?
非常感谢。
答案 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;
}