Java 非表达式的正则表达式帮助

Java 非表达式的正则表达式帮助,java,regex,Java,Regex,我需要一个java正则表达式,它执行以下操作: 将而不是的模式与以下模式匹配 一个可选的负号('-'),后跟 一到四个数字,后跟 一个可选的点字符,后跟 一个或多个零(如果有点) 行为如下 表达式查找1的匹配项 表达式未找到1.0的匹配项 当它变成正则表达式时,如果我问我需要完成什么,而不是问关于内部工作的问题,有时会得到一个更简单的解决方案 就我而言 我想捕捉一个十进制数字模式,但像1.000这样的数字都可以,但1.0001不行 一些例子 1 No match 123

我需要一个java正则表达式,它执行以下操作:

而不是的模式与以下模式匹配

  • 一个可选的负号('-'),后跟
  • 一到四个数字,后跟
  • 一个可选的点字符,后跟
  • 一个或多个零(如果有点)

行为如下

表达式查找1的匹配项 表达式未找到1.0的匹配项

当它变成正则表达式时,如果我问我需要完成什么,而不是问关于内部工作的问题,有时会得到一个更简单的解决方案

就我而言

我想捕捉一个十进制数字模式,但像1.000这样的数字都可以,但1.0001不行

一些例子

1           No match
1234        No match
99          No Match
1.000000    No match
123.000000  No Match
-123        No Match

1.01        Match
-1.1        Match
12345566    Match 
((-)(\d){1,4}+(\)?(0)*([1-9]+)

这似乎与你的例子相符,但我仍然不确定你想用它来完成什么

^-?\d{1,4}(\.0+)?$

您需要使用程序本身来拒绝输入。可能匹配有效的数字,然后拒绝任何匹配的数字,然后返回。

如果您真的需要帮助,您可以发布大约10行代码进行测试,包括您需要和不需要匹配的代码。;-)在12345566之前,我一直与您在一起,为什么在没有其他整数匹配的情况下会匹配?因为位数超过4,我们基本上可以假设您希望验证数字是否在某个范围内,或者是否被特定数量的sig限制?这开始让人感觉像是一道数学题,来自一位非常古怪的老师,连教职员工都不跟他说话。在我看来,你很清楚什么是不匹配的。为什么不在代码中使用正则表达式并反转条件呢?我更想的是
(\d{1,4}(?:\.\d{1,4}))
,但这基本上是一个消极的展望。@Brad真正让我感到困惑的是“一个或多个零(如果有点)”似乎与-1.1是一个匹配相矛盾。@shade:我真的很困惑。在我看来,找到你不想要的数字,然后否定结果似乎更合理。i、 e.
如果(!isMatch).
而不是在表达式中加入反向逻辑。@Staffan Haaaa是的,那将是个好主意,不是吗:PIMO,它有太多不必要的括号了。它们都可以被删除,正则表达式将完全匹配。这很有效。雷格斯古鲁万岁。你能告诉我你所做的和我所做的有什么区别吗?哎呀,错过了一次逃跑。我所做的,你没有做的,是将小数点分隔符与后面的数字分组。
^-?\d{1,4}(\.0+)?$