Java 中十进制数的正则表达式是什么?

新手上路,请多包涵

我不太确定 Java 中这段时间的正确正则表达式是什么。这是我的一些尝试。可悲的是,它们都意味着任何角色。

 String regex = "[0-9]*[.]?[0-9]*";
String regex = "[0-9]*['.']?[0-9]*";
String regex = "[0-9]*["."]?[0-9]*";
String regex = "[0-9]*[\.]?[0-9]*";
String regex = "[0-9]*[\\.]?[0-9]*";
String regex = "[0-9]*.?[0-9]*";
String regex = "[0-9]*\.?[0-9]*";
String regex = "[0-9]*\\.?[0-9]*";

但我想要的是实际的“。”角色本身。有人有想法吗?

我实际上想做的是为非负实数(允许小数)写出正则表达式。所以可能性是:12.2, 3.7, 2., 0.3, .89, 19

 String regex = "[0-9]*['.']?[0-9]*";
Pattern pattern = Pattern.compile(regex);

String x = "5p4";
Matcher matcher = pattern.matcher(x);
System.out.println(matcher.find());

最后一行应该打印 false 但无论如何打印 true。我认为我的正则表达式是错误的。

原文由 Gian Alix 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 387
1 个回答

更新

要匹配非负十进制数,您需要此正则表达式:

 ^\d*\.\d+|\d+\.\d*$

或者在 java 语法中: "^\\d*\\.\\d+|\\d+\\.\\d*$"

 String regex = "^\\d*\\.\\d+|\\d+\\.\\d*$"
String string = "123.43253";

if(string.matches(regex))
    System.out.println("true");
else
    System.out.println("false");

原始正则表达式尝试的说明:

 [0-9]*\.?[0-9]*

使用java转义它变成:

 "[0-9]*\\.?[0-9]*";

如果您需要将点设为强制性,则删除 ?标记:

 [0-9]*\.[0-9]*

但这也将只接受一个没有任何数字的点…因此,如果您希望验证将数字视为强制性的,您可以使用 + (这意味着一个或多个)而不是 *(这意味着零个或多个)。那样的话就变成了:

 [0-9]+\.[0-9]+

原文由 Mustofa Rizwan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题