Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回NaN的正则表达式参数上的parseFloat_Javascript_Regex_Parameters - Fatal编程技术网

Javascript 返回NaN的正则表达式参数上的parseFloat

Javascript 返回NaN的正则表达式参数上的parseFloat,javascript,regex,parameters,Javascript,Regex,Parameters,我试图通过一定量操纵字符串中的一些浮点值。为此,我有以下几点: var字符串=“”; var regex=/[+-]?([0-9]*[.])?[0-9]+/g; log(string.replace(regex,parseFloat(“$&”)+300))请参见语法分析 从给定值解析的浮点数。如果值 无法转换为数字,返回NaN 因此,很明显,这里有一个无法转换为数字的字符串。您的代码相当于编写 var temp = parseFloat("$&") + 300; document.bo

我试图通过一定量操纵字符串中的一些浮点值。为此,我有以下几点:

var字符串=“”;
var regex=/[+-]?([0-9]*[.])?[0-9]+/g;
log(string.replace(regex,parseFloat(“$&”)+300))请参见语法分析

从给定值解析的浮点数。如果值 无法转换为数字,返回NaN


因此,很明显,这里有一个无法转换为数字的字符串。

您的代码相当于编写

var temp = parseFloat("$&") + 300;
document.body.innerText = string.replace(regex, temp);
因为函数参数是在调用函数之前计算的
“$&”
仅当它在
replace()
获取的替换字符串中时才具有特殊意义,它对
parseFloat()
没有任何特殊意义,
replace()
不可能进入
parseFloat()
调用并修改参数

如果要调用函数以确定替换,则需要将函数引用传递给
replace()
函数,而不是传递包含函数调用的表达式

var字符串=“”;
var regex=/[+-]?([0-9]*[.])?[0-9]+/g;
var newString=string.replace(regex,match=>parseFloat(match)+300);

log(newString)
没错,但是如果我将replace改为“”,它会删除所有的内容,因此它会正确地匹配它们-真正的问题是如何正确地解析它们。如果无法使用
parseFloat
解析,则不会发生这种情况。谢谢您的帮助!显然我错过了文档中的“
replacement
可以是一个字符串或每个匹配都要调用的函数”部分。我决定使用
match=>Math.round((parseFloat(match)+300.0001)*100)/100)
per来删除那些讨厌的浮点错误。如果你想要两个十进制数字,请使用
toFixed(parseFloat(match)+300),2)
。它还可以进行必要的四舍五入。对,但这会给没有数字的数字加上数字,这是我不想要的。