Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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:从多个和的字符串中检索负浮点数_Javascript_Regex_Floating Point - Fatal编程技术网

JavaScript:从多个和的字符串中检索负浮点数

JavaScript:从多个和的字符串中检索负浮点数,javascript,regex,floating-point,Javascript,Regex,Floating Point,我有一个简单的应用程序,允许我计算一条路线上的发票和存款总额。但是,我希望允许用户在单个输入字段中输入多个值;例如: 500+50+36.5-45.2-10 我编写了一个函数,它将检索此输入,然后将此字符串拆分为+符号处的数组元素,并立即将值解析为数字,然后将它们相加,并将用户输入的总数返回到每个字段中。只要用户不使用除+以外的任何符号,这一切都很好 我已经搜索了regexp的用法: 但这些结果似乎都不起作用。 如何使代码检索这些值,以便将负值作为负值传递到数组中 以下是我的Js代码片段

我有一个简单的应用程序,允许我计算一条路线上的发票和存款总额。但是,我希望允许用户在单个输入字段中输入多个值;例如:
500+50+36.5-45.2-10

我编写了一个函数,它将检索此输入,然后
将此字符串拆分为
+
符号处的数组元素,并立即将值解析为数字,然后将它们相加,并将用户输入的总数返回到每个字段中。只要用户不使用除
+
以外的任何符号,这一切都很好

我已经搜索了
regexp
的用法:

但这些结果似乎都不起作用。 如何使代码检索这些值,以便将负值作为负值传递到数组中

以下是我的Js代码片段: 有关完整代码,请访问我的


有点脏,但可能
A.replace(/-/g,“+”)。split(“+”)
,这样,你在每个减号之前加一个加号,因为负数基本上没有运算符。

有点脏,但可能
A.replace(/-/g,“+”)。split(“+”
,这样,你在每个减号之前加一个加号,因为负数基本上没有运算符。

我非常喜欢PhistucK的解决方案,但这里有一个与regex的替代方案:

value1Arr = a.split(/(?=\+|\-)/);
这将拆分它,但保留分隔符,因此结果将为:

["500", "+50", "+36.5", "-45.2", "-10"]

我非常喜欢PhistucK的解决方案,但这里有一个与regex的替代方案:

value1Arr = a.split(/(?=\+|\-)/);
这将拆分它,但保留分隔符,因此结果将为:

["500", "+50", "+36.5", "-45.2", "-10"]

您可以使用在+号或-号之前拆分的模式:

var str = '500+50+36.5-45.2-10';

console.log(str.split(/\+|(?=-)/));

您可以使用在+号或-号之前拆分的模式:

var str = '500+50+36.5-45.2-10';

console.log(str.split(/\+|(?=-)/));

可能
value1Arr=a.split(/\+|(?=-)/)那么这些加号就被删除了?这是我最初想要建议的,但我不知道
?=
,我尝试了
?:
。谢谢你教我这个把戏!不,它去掉了加号,而你的保留了加号。是的,如果这就是你的意思的话,当解析时,它最终将是相同的。是的,这就是我在解析后的意思:)也许
value1Arr=a.split(/\+)(?=-)/那么这些加号就被删除了?这是我最初想要建议的,但我不知道
?=
,我尝试了
?:
。谢谢你教我这个把戏!不,它去掉了加号,而你的保留了加号。是的,如果这就是你的意思的话,解析后它最终会是一样的。是的,解析后我的意思是:)只有当用户只输入一个负数时才起作用。如果您将
replace
的第一个参数作为
a.replace(/(\-)/g,“+-”).split(“+”)
,并将
g
属性设置为
regexp
,则无论多么混乱,它都可以工作。谢谢;)是的,几秒钟后我就修好了。:)无需在此处转义
-
或使用括号。正如您在下面看到的,我已经添加了一个答案。这两种解决方案最终都会起作用,但是
/\+\124;(?=-)/
在代码方面要干净得多。谢谢;)仅当用户仅输入一个负数时有效。如果您将
replace
的第一个参数作为
a.replace(/(\-)/g,“+-”).split(“+”)
,并将
g
属性设置为
regexp
,则无论多么混乱,它都可以工作。谢谢;)是的,几秒钟后我就修好了。:)无需在此处转义
-
或使用括号。正如您在下面看到的,我已经添加了一个答案。这两种解决方案最终都会起作用,但是
/\+\124;(?=-)/
在代码方面要干净得多。谢谢;)