RegEx号码[-99.99 ..- 0.01] + [0.01..99.99]

时间:2010-01-05 14:06:20

标签: regex xsd

我想验证一个数字。此数字必须在-99.99到+99.99之间,但0(零)除外。 我想出了这个RegEx表达式

[-+]?((\d{1,2}\.?\d{0,1}[1-9])|(\d{0,1}[1-9]))

但它不处理这种类型的数字:

x0
xy.00

有什么想法吗?

编辑:   我正在尝试对xsd文件进行限制。

4 个答案:

答案 0 :(得分:3)

尝试:

[+-]?([1-9]\d?(\.\d\d?)?|0\.[1-9]\d?||0\.0[1-9])

含义:

[+-]?                 # optional '+' or '-'
(                     #
  [1-9]\d?(\.\d\d?)?  #   1 - 99.99
  |                   #   OR
  0\.[1-9]\d?         #   0.1 - 0.99
  |                   #   OR
  0\.0[1-9]           #   0.01 - 0.09
)                     #

答案 1 :(得分:2)

试试这个正则表达式:

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

这将允许任何数字以大于0的数字开头,后跟一个额外的可选数字([1-9]\d?(\.\d{1,2})?)。或者,如果它以0开头,后跟一个小数点,后跟一个不允许0000\.(\d?[1-9]|[1-9]\d))的序列。

答案 2 :(得分:0)

好吧,你可以简单地为缺少的数字添加两个案例......从你原来的正则表达式开始,

 [-+]?((\d{1,2}\.?\d{0,1}[1-9])|(\d{0,1}[1-9])|(\d0)|([1-9]\d\.00)|(\d[1-9].00))

BTW而不是\d{1,2}\d\d?似乎稍微好一点;同样\d?而不是\d{0,1}

无论如何,这似乎是痛苦的运动。你不能使用正则表达式来验证这是你想要的格式的数字,并使用一个单独的约束使它不是零?

答案 3 :(得分:0)

试试这个

^\d{0,2}(\.\d{1,2})?$/