正则表达式验证一个小数后只有一位数的数字

时间:2010-12-08 18:59:21

标签: regex

我有一个正则表达式,用于验证用户输入一个小数后只有一位数的数字。

但是,如果我输入:0.1, 0.2, 0.3, ..., 0.9,则表示每个都无效。如何更正此正则表达式以接受上述值?

/^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$/

4 个答案:

答案 0 :(得分:3)

您要求第一个数字为1-9。

答案 1 :(得分:1)

我认为你想要的比你在那里更简单。你的正则表达式失败是因为它在开始时[1-9]因为它强迫答案在开头有一个1-9所以......

/^[0-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$/

我可能会弄错,但我认为你可以通过更简化的正则表达式完成所有这些...

/^\d+(?:\.\d)?$/

答案 2 :(得分:1)

/^[0-9]{0,4}$|^[0-9]{0,4}[\.][0-9]$/

或者更简洁

/^\d{0,4}$|^\d{0,4}[\.]\d$/

您需要在小数点之前{​​{1}}。

答案 3 :(得分:1)

由于正则表达式的结构是在现有情况下禁止前导零,因此当整数部分为零时,您可能只希望在小数点前只允许一个零。这意味着增加另一种选择:

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

但仅0呢?这是有效的输入吗?如果是这样,您可以在该替代方案中将小数部分作为可选项:

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

这也允许0.0。如果您不想这样做,可以将最终[0-9]更改为[1-9]

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

另外,请注意我是如何在组中包含替换的,因此我只需要为整个正则表达式使用一个^和一个$