用于验证NUMBER(m,n)的正则表达式

时间:2017-02-22 08:58:49

标签: regex

我有以下正则表达式来验证列数据类型NUMBER(9,2)的传入数据,其中+/-前缀是可选的。

[+-]?(?:[0-9]{1,7})?(?:\.[0-9]{1,2})?

允许值

+1
+1.1
-0.1
+.1
1
1.1
0.1
1
-1
-1.1
-.1
1111111.11
+1111111.11
-1111111.11

失败的案例

+
-

但它也只接受+/-符号,因为捕获组都是可选的。我们如何克服这个问题?

3 个答案:

答案 0 :(得分:2)

<强> 更新

由于所有捕获组都是可选的,如果发生,它将不可避免地匹配单个[+-] 使用以下正则表达式模式:

^[+-]?(\d{1,7}|(?=\.))(\.\d{1,2})?

https://regex101.com/r/4GIOga/5

答案 1 :(得分:0)

您可以在符号类后使用正向前瞻,以指示只有在后面跟着任何内容时才允许它们:

main()

如果您一次测试所有数字,则需要设置多线修改器。

See the demo

答案 2 :(得分:0)

使用此

^{-|\+}?\d+(\.\d{1,2})?$

这适用于你提出的每一个案例。