2

我有正则表达式验证器,其表达式如下:

^\d{1,4}(\,\d{1,3})?$

我不想验证下一个格式:

  1. 最多 3 位小数的十进制数,如 0,125 1,15, 0,5 但不是(1,1234),这是可以的,但用户可以写 5 位数字,如 (12345, 54321 ... )

  2. 排除 0,所以如果用户只写 0,会出现错误,但用户可以写 0,5 或 0,125...我不知道如何管理

所以除了场景 2 之外一切正常。我不知道如何只排除 0...我可以使用正则表达式验证器来做到这一点,还是应该尝试在函数中使用自定义验证器(检查值是否为 0)

4

1 回答 1

2

您可以禁止数字包含所有零,并带有否定的lookbehind。这也会使所有由零和点组成的条目无效,但这可能是一件好事:很可能因为你不想要一个独立的零,你也不想要00,0000.000

^(\d{1,4}(\.\d{1,3})?)(?<!^[0\.]+)$
//                    ^^^^^^^^^^^^
//                        |||
//                The lookbehind part

我添加到您的表达式中的部分检查字符串是否不完全由零和点组成。这是关于 ideone 的演示

于 2013-06-13T09:57:13.927 回答