我需要使用以下模式验证整数。整数部分最多可包含5个字符,而小数部分值最多可包含2个字符。 (分数值是可选的)。前导+或-也是可选的。

(+/-) mmmmm (5).nn (2)

测试数据
Valid
-1
+1
1
+.1
-.1
.1
+11111.11
-11111.11
11111

Invalid
+111111.11
-111111.11
+11111.111
-11111.111
11111.111
111111.11
+1.
-1.
1.

这是我目前使用的
[+-]?\d{0,5}\.?\d{1,2}?

它是否正确?我是否缺少明显的东西?

这是test case

编辑

如果存在其他限制,则精度中将包含比例尺中的位数。

例如,DECIMAL(5,2)定义形式为1234.5的数字,而DECIMAL(5,5)定义形式为1.2345的数字。我应该如何改变呢?

最佳答案

做:

^[+-]?(?:[0-9]{1,5})?(?:\.[0-9]{1,2})?$
  • ^[+-]?在开始时与+-匹配,可选
  • (?:[0-9]{1,5})?匹配一到五位数字,可选
  • (?:\.[0-9]{1,2})?$与文字点匹配,末尾跟一或两个数字(可选)。由于文字.位于未捕获的组内,后面紧跟着数字模式,因此仅当之后需要数字时才匹配

  • Demo

    09-26 16:13