我有一个字符串,我需要将其解析为float,但首先我需要替换它,如果它不是数字(整数或浮点数),所以我试图创建一个正则表达式做到这一点
我的尝试导致 NaN
我最好的尝试之一是
var $replace = $text.replace(/^[^d.]*/, '');
var $float = parseFloat($replace);
有谁能告诉我,我做错了什么?
答案 0 :(得分:1)
如果真的想要替换不是数字的所有内容,那么试试这个:
var $replace = $text.replace(/[^\d.]/g, '');
var $float = parseFloat($replace);
这将使用"123a3d2"
字符串替换"12332"
字符串。
答案 1 :(得分:1)
看起来你想在将字符串转换为float之前从字符串的开头删除“非数字”字符。一种天真的方法是:
var s = input.replace(/^[^\d.]+/, '');
var n = parseFloat(s);
这适用于像“foo123”这样的输入,但在“foo.bar.123”上会失败。要解析这个问题,我们需要一个更复杂的正则表达式:
var s = input.replace(/^(.(?!\d)|\D)+/, '');
var n = parseFloat(s);
另一种方法是通过char去除输入char,直到找到有效的float:
function findValidFloat(str) {
for (var i = 0; i < str.length; i++) {
var f = parseFloat(str.substr(i))
if (!isNaN(f))
return f;
}
return NaN;
}
答案 2 :(得分:0)
if (! isNaN($text))
$float = parseFloat($text);
else
$float = 0; // or whatever