【发布时间】:2014-04-28 20:27:29
【问题描述】:
我有这个正则表达式几乎完美......它似乎可以处理所有除了一个以负号和小数开头的数字。所以如果我输入:
-.2
我收到一个错误 -
这是我的正则表达式——我测试过的所有其他东西都运行良好......
^(\+|-)?[0-9]{1,11}?(?:\.[0-9]{1,4})?$
这允许:
- 最多 11 位数字(990 亿)
- 正数或负数
- 最多 4 位小数(可选)
- 小数点前的前导 0 是可选的 - 仅适用于正数
这些都有效:
-0.2345
-10
12
.125
0.1245
5.555
25000000000 (aka 25 Billion)
25000000000.25
这些不起作用:
-.2
-.421
【问题讨论】:
-
@JohnBupit -
.125在他的工作清单中 -
但不能:
".125".match(/^(\+|-)?[0-9]{1,11}?(?:\.[0-9]{1,4})?$/) -
另一个错误?
100000000000.0001应该合法吗? -
@Hogan - 不......我不希望它超过 1000 亿。感谢所有人...有人发布了以下内容然后将其删除...(它似乎工作得很好!!感谢神秘的助手。我将其投入生产并继续我的下一个问题...感谢所有人快速而精彩的回复!!:^(\+|-)?\.?[0-9]{1,11}?(?:\.[0-9]{1,4})?$跨度>
-
@DanB - 这个答案是错误的,它会允许像
.2.2这样的非法号码,这就是他删除它的原因(我的评论)。请使用约翰的答案或我的答案。它们仍然不会限制在 1000 亿以下,但它们会更好。