Regex 正则表达式编号[-99.99..-0.01]+[0.01..99.99]

Regex 正则表达式编号[-99.99..-0.01]+[0.01..99.99],regex,xsd,Regex,Xsd,我想验证一个数字。此数字必须介于-99.99到+99.99之间,但0除外。 我想出了这个正则表达式 [-+]?((\d{1,2}\.?\d{0,1}[1-9])|(\d{0,1}[1-9])) 但它不处理此类型的数字: x0 xy.00 有什么想法吗 编辑: 我正在尝试对xsd文件进行限制。尝试以下正则表达式: ^[-+]?([1-9]\d?(\.\d{1,2})?|0\.(\d?[1-9]|[1-9]\d))$ 这将允许任何以大于0的数字开头的数字,后跟附加的可选数字[1-9]\d?\。

我想验证一个数字。此数字必须介于-99.99到+99.99之间,但0除外。 我想出了这个正则表达式

[-+]?((\d{1,2}\.?\d{0,1}[1-9])|(\d{0,1}[1-9]))
但它不处理此类型的数字:

x0
xy.00
有什么想法吗

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

尝试以下正则表达式:

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

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

尝试以下正则表达式:

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

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

那么,您可以简单地为缺少的数字再添加两个大小写。。。从你原来的正则表达式开始

 [-+]?((\d{1,2}\.?\d{0,1}[1-9])|(\d{0,1}[1-9])|(\d0)|([1-9]\d\.00)|(\d[1-9].00))
顺便说一句,与\d{1,2}相比,编写\d\d?似乎更好一些?;类似地\d?而不是\d{0,1}


无论如何,这似乎是一种痛苦的练习。您不能使用正则表达式验证这是一个您想要的格式的数字,并使用单独的约束使其不为零吗?

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

 [-+]?((\d{1,2}\.?\d{0,1}[1-9])|(\d{0,1}[1-9])|(\d0)|([1-9]\d\.00)|(\d[1-9].00))
顺便说一句,与\d{1,2}相比,编写\d\d?似乎更好一些?;类似地\d?而不是\d{0,1}

无论如何,这似乎是一种痛苦的练习。您不能使用正则表达式验证这是一个您想要的格式的数字,并使用单独的约束使其不为零吗?

试试这个

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

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

意思是:

[+-]?                 # 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
)                     #
尝试:

意思是:

[+-]?                 # 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
)                     #


为什么要使用正则表达式来执行此操作?为什么要使用regexp?你不能把它当作一个数字吗?数字总是有两个小数,还是45也是有效的?只有0无效,或者0.0和0.00无效?@Bart-45有效0、0.0、00.0、00.00无效。我正在尝试为XSD文件设置限制。为什么要使用正则表达式来执行此操作?为什么使用regexp?你不能把它当作一个数字吗?数字总是有两个小数,还是45也是有效的?只有0无效,或者0.0和0.00无效?@Bart-45有效0、0.0、00.0、00.00无效。我正在尝试为XSD文件设置限制。@Gumbo:我做了一些更改,因为不允许使用数字x.y。将\.\d{2}替换为\.\d{1,2}--这对我有用:[-+]?[1-9]\d?\.\d{1,2}?\0\.\d?[1-9]|[1-9]\d@st.stoqnov:所以只允许有两位小数的数字?@Gumbo:不,不允许有一位或两位小数。@st.stoqnov:然后你的评论“x.y不允许”有点分散注意力。我是说你的例子不允许。@Gumbo:我做了一点改变,因为数字x.y是不允许的。将\.\d{2}替换为\.\d{1,2}--这对我有用:[-+]?[1-9]\d?\.\d{1,2}?\0\.\d?[1-9]|[1-9]\d@st.stoqnov:所以只允许有两个小数位的数字?@Gumbo:不,不允许有一个或两个小数位。@st.stoqnov:然后你的评论“x.y不允许”有点分散注意力。我的意思是你的例子不允许。那么数字0.10、0.11呢,…0.99?确实,忘记了\d?在第二部分或第二部分,接得好!。那么0.1,0.2,…,0.9呢?现在你的表达式和我的差不多了-呃,它们被0\[1-9]\d覆盖了?那么数字0.10、0.11、…0.99呢?事实上,忘记了\d?在第二部分或第二部分,接得好!。那么0.1,0.2,…,0.9呢?现在你的表达式和我的差不多了-呃,它们被0\[1-9]\d覆盖了?