我有一个正则表达式,用于验证用户输入一个小数后只有一位数的数字。
但是,如果我输入:0.1, 0.2, 0.3, ..., 0.9
,则表示每个都无效。如何更正此正则表达式以接受上述值?
/^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$/
答案 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])?)$/
另外,请注意我是如何在组中包含替换的,因此我只需要为整个正则表达式使用一个^
和一个$
。