正则表达式,但数字有两位小数

时间:2014-05-27 13:05:50

标签: javascript regex

对于那些喜欢正则表达式的人,我有一个很好的挑战;像我这样的。不幸的是,我无法想出这个。

此正则表达式是反向匹配。我需要匹配除了适当数量之外的所有东西;像:

这些类型不需要匹配:

0,00
0.00
12314345.7
24234.54
34435,00
34545,43

这些类型需要匹配:

0.00
,87
1e3,67

所以除了带逗号或点的十进制数之外的所有内容都需要在JavaScript中匹配(是的,反向)。

我已经做到了:

([^0-9]+([^\.,]{0,1})+[^0-9]{0,2})

但是,显然,它无法正常工作,看到它通过多个逗号或点,并且不会将小数限制为最多两个。

2 个答案:

答案 0 :(得分:1)

使用否定前瞻的解决方案:

^(?!\d+([,.]\d{0,2})?$).*$

http://regex101.com/r/jY3tC3

注意:此正则表达式需要锚定。我已经在^$之间锚定。

答案 1 :(得分:0)

试试这个:

/^(?!(\d+[\.,]\d+)).*$/gm

请参阅更新后的demo here