我已经编写了两个允许以下格式的正则表达式:
其中 Y 可以是 1 或 2 位数字。而 X 是无限的。
正则表达式1: ^\d+(?:\.{0,1})(?:\d{1,2})?$
正则表达式2: ^\d+\.{0,1}(?:\d{1,2})?$
这个比那个好吗?
有没有更好的方法来写这个?
另外,为什么这个在点设置为可选的情况下不起作用: ^\d+(?:\.)(?:\d{1,2})?$
谢谢。
有没有更好的方法来写这个?
您可以在没有任何组的情况下使用此正则表达式:
^\d+\.?\d{0,2}$
Run Code Online (Sandbox Code Playgroud)
\d{0,2}允许在句点后没有任何数字。另请注意,\.{0,1}与\.?
究其原因^\d+(?:\.)(?:\d{1,2})?$不工作是,它并没有做。可选的,如你所说。该(?:...)是不是你如何使一些可选的; 它的主要用途是将多个事物组合在一起(以便后续的?、'+' 等可以修改该组)而不产生捕获值。
通过在后面加上?. 所以:
^\d+\.?(?:\d{1,2})?$
Run Code Online (Sandbox Code Playgroud)
应该管用。与您显示的其他选项中的任何一个相比,它更简单 - 所以我更可取。更简单:
^\d+\.?\d{0,2}$
Run Code Online (Sandbox Code Playgroud)
应该没问题。