2013-05-09 121 views
4

我正在尝试构建一个正则表达式,该数据库允许使用以下规则的负数和正数十进制数。RegEx-验证负数和正数十进制数

  1. 不能有小数点后超过2个数字
  2. 小数点是可选
  3. 总长度包括小数点不应超过12炭
  4. 如果没有小数点是存在的,最大长度应不超过9个字符

任何人都可以帮我吗?非常感谢。

+0

请问减计数为字符串中的字符?如果有两个以上的小数位,但都是0,那么呢? – 2013-05-09 11:35:30

+0

没有减去在12限制内不会计数。即使是0,也不允许超过2位小数位。谢谢:-) – 2013-05-09 11:38:58

回答

11

检查这个正则表达式。

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

此正则表达式说

  • 标志是可选的
  • 至少一个和最大的9位数字的整数部分
  • 如果小数点是存在的,至少一个和最大后两位数字是。
+0

谢谢:-)它完美的工作。 – 2013-05-09 11:50:34

+0

这个链接帮助我编写和测试这个正则表达式http://erik.eae.net/playground/regexp/regexp.html – 2013-05-09 11:52:27

+0

你可以参考一些关于正则表达式的好教程吗? – muneebShabbir 2013-05-09 12:13:00

3

这是非常简单的,因为12 - 9 == 3两位小数+点。

var re = new RegExp('^-?\\d{1,9}(\\.\\d{1,2})?$'); 

授权

  • -123456789
  • -123456789.1
  • -123456789.12
  • 0
  • 0.12

但不会接受

  • 超过12 DECS
  • 123.无小数
  • 123.123多于两个小数
  • ..12更多的点(缺失0)
+0

我认为你在正则表达式中缺少双反斜杠。 – 2013-05-09 11:44:29

+0

@ Qantas94Heavy的确,谢谢。 – 2013-05-09 11:45:42

+0

谢谢,但它接受的值总共大于12个字符,如12345678912。00 – 2013-05-09 11:46:08

1

我自己的正则表达式:

var rgx = /^(-{1}?(?:([0-9]{0,10}))|([0-9]{1})?(?:([0-9]{0,9})))?(?:\.([0-9]{0,3}))?$/;