我想验证一个数字。此数字必须在-99.99到+99.99之间,但0(零)除外。 我想出了这个RegEx表达式
[-+]?((\d{1,2}\.?\d{0,1}[1-9])|(\d{0,1}[1-9]))
但它不处理这种类型的数字:
x0
xy.00
有什么想法吗?
编辑: 我正在尝试对xsd文件进行限制。
答案 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
开头,后跟一个小数点,后跟一个不允许00
或0
(0\.(\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})?$/