我已经写了两个允许以下格式的Regexp:
其中Y可以是1或2位数。 X是无限的。
Regex1:^\d+(?:\.{0,1})(?:\d{1,2})?$
Regex2:^\d+\.{0,1}(?:\d{1,2})?$
一个比另一个好吗?
有没有更好的方法来写这个?
此外,为什么这个只能将点设置为可选项:^\d+(?:\.)(?:\d{1,2})?$
感谢。
答案 0 :(得分:3)
有没有更好的方法来写这个?
您可以在没有任何群组的情况下使用此正则表达式:
^\d+\.?\d{0,2}$
\d{0,2}
允许在句点之后缺少任何数字。另请注意,\.{0,1}
与\.?
答案 1 :(得分:2)
^\d+(?:\.)(?:\d{1,2})?$
不起作用的原因是它不制作了。如你所说的可选。 (?:
... )
不是你如何制作可选的东西;它的主要用途是将多个事物组合在一起(以便后续的?
,'+'等可以修改组)而不会产生捕获值。
使用?
跟随它,使其成为可选项。所以:
^\d+\.?(?:\d{1,2})?$
应该有效。这比你展示的其他选项更简单 - 更可取。更简单:
^\d+\.?\d{0,2}$
应该没事。