正则表达式验证NUMERICS

问题描述:

我想验证用户输入的总和,正则表达式验证NUMERICS

应该接受,

1+2 
1.2+56+3.5 

它不应该接受任何字母,比其他特殊字符。和+

,主要是不应该接受++和..

,请帮助我的正则表达式。

+0

你能告诉我们你试过了什么吗? – 2014-10-30 13:14:54

+0

也许你可以通过尝试“评估”来解析表达式 – paul 2014-10-30 13:19:26

+0

这就是我所拥有的http://jsfiddle.net/DwKZh/763/,我尝试了这里提供的所有表达式,但仍然允许我输入无效的输入。 – Dosti 2014-10-31 07:08:46

这应该工作:

var regex = /^[0-9]+(\.[0-9]+)?(\+[0-9]+(\.[0-9]+)?)*$/; 
"1+2".match(regex); // not null 
"1.2+56+3.5".match(regex); // not null 
"1++2".match(regex); // null 
"1..2".match(regex); // null 

在线:http://regex101.com/r/zJ6tP7/1

+0

这就是我的http://jsfiddle.net/DwKZh/763/,我尝试了这里提供的所有表达式,但仍然允许我输入无效输入。 – Dosti 2014-10-31 06:21:14

+0

请给出一个无效输入的例子,满足正则表达式 – codebox 2014-10-31 08:10:28

+0

1 ++ 2,1..2 + 2,++ 1,.. 1 – Dosti 2014-10-31 08:15:34

这样的东西应该足够

^([+]?\d+(\.\d+)?)*$ 

http://regex101.com/r/qE2kW1/2

来源:Validate mathematical expressions using regular expression?

请注意,我假设它不应该接受+或+。以及。我并不假定在添加之前需要检查多个小数,这意味着这将接受3.4.5我还假设您希望它以数字开始和结束,所以.5和4+将失败。

(\d*[\.\+])*(\d)* 

这需要任意数量的数值,然后是a。或a +,任意次数,然后是任何其他数字值。

为了避免像3.4.5这样的事情,您可能需要使用某种查找方式。

编辑:忘了格式化正则表达式。