我的目的是为十进制数写一个正则表达式,其中有效数字是xx.0,xx.125,xx.25,xx.375,xx.5,xx.625,xx.75,xx.875之一(即以1/8为单位测量)xx可以是0,1或2位数。

我想出了以下正则表达式:

^\d*\.?((25)|(50)|(5)|(75)|(0)|(00))?$

虽然这适用于0.25,0.5,0.75,但它不适用于0.225,0.675等。

我以为'?' 也适用于前面有数字的情况。

有人可以指出我的错误

编辑:要求数字为小数!

编辑2:我意识到我的错误,我对'?'感到困惑。 谢谢。

===============>>#1 票数:3

我认为将小数部分乘以8可能更容易,但是你不会考虑在正则表达式中引导最后两位小数的数字。

^\d{0,2}\.(00?|(1|6)?25|(3|8)?75|50?)$

===============>>#2 票数:3 已采纳

我会在文字后添加另一个\\d* . 检查\\.

^\\d*\\.?\\d*((25)|(50)|(5)|(75)|(0)|(00))?$

===============>>#3 票数:1

你的错误是: \\.? 表示一个可选的\\. ,不是数字(或其他任何东西,在这种情况下)。

关于? (问号)运算符:使前一项可选。 贪心,所以如果可能的话,可选项包含在比赛中。 来源

===============>>#4 票数:1

^\d{0,2}\.(0|(1|2|6)?25|(3|6|8)?75|5)$

===============>>#5 票数:0

正则表达式用于匹配模式,而不是检查数值。 找到一个可能的正则表达式字符串,然后检查它的主机语言(PHP,无论如何)的数值。

  ask by Amit Vig translate from so

未解决问题?本站智能推荐:

关注微信公众号