Java 接受最多5位数字和小数的正则表达式

Java 接受最多5位数字和小数的正则表达式,java,regex,Java,Regex,\d{0,5}\.\d{0,6}不接受没有小数的数字。如何使其在未输入时忽略小数位使整个小数位组可选: \d{0,5}(?:\.\d{0,6})? 这将匹配0到5位数字,有或没有小数点后接另一个0到6位数字 我们可以在捕获组中添加?:,告诉正则表达式引擎不要捕获括号中的内容。在这种情况下,如果不使用?:,引擎将捕获可选的小数点和后续数字。关闭捕获功能可以提高正则表达式的性能,这就是为什么您经常会看到关于堆栈溢出的正则表达式问题会讨论这个问题。/(\d{0,5})(\。\d{0,5})*/您也可

\d{0,5}\.\d{0,6}
不接受没有小数的数字。如何使其在未输入时忽略小数位

使整个小数位组可选:

\d{0,5}(?:\.\d{0,6})?
这将匹配0到5位数字,有或没有小数点后接另一个0到6位数字


我们可以在捕获组中添加
?:
,告诉正则表达式引擎不要捕获括号中的内容。在这种情况下,如果不使用
?:
,引擎将捕获可选的小数点和后续数字。关闭捕获功能可以提高正则表达式的性能,这就是为什么您经常会看到关于堆栈溢出的正则表达式问题会讨论这个问题。

/(\d{0,5})(\。\d{0,5})*/
您也可以使用这个

您想要接受哪种数字?
.5
有效吗?或
1.
?如果不是,那么也许值得将部分(或全部)
{0
更改为
{1
。目前我希望它接受.5可能是,(?:)而不是()会更好吗?谢谢,我会测试一下out@Gangnus这有什么作用?使用锚定会更好。就像它匹配
abc123.456xyz
@b.d一样,在处理HTML时,您可能应该使用解析器,而不仅仅是正则表达式。抱歉,不要使用
*
使用
/(\d{0,5})(\.\d{0,5})?/
,谢谢您指出。@Toto