我需要使用以下模式验证整数。整数部分最多可包含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