Gia*_*lix 6 java regex real-number
我不太确定什么是 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]*";
Run Code Online (Sandbox Code Playgroud)
但我想要的是实际的“。” 性格本身。有人有想法吗?
我实际上想要做的是写出非负实数(允许小数)的正则表达式。所以可能性是: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());
Run Code Online (Sandbox Code Playgroud)
最后一行应该打印 false 但无论如何打印 true。我认为我的正则表达式是错误的。
更新
要匹配非负十进制数,您需要此正则表达式:
^\d*\.\d+|\d+\.\d*$
Run Code Online (Sandbox Code Playgroud)
或在 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");
Run Code Online (Sandbox Code Playgroud)
对原始正则表达式尝试的解释:
[0-9]*\.?[0-9]*
Run Code Online (Sandbox Code Playgroud)
用 java 转义它变成:
"[0-9]*\\.?[0-9]*";
Run Code Online (Sandbox Code Playgroud)
如果您需要将点设为强制性,则删除 ? 标记:
[0-9]*\.[0-9]*
Run Code Online (Sandbox Code Playgroud)
但这也将只接受一个没有任何数字的点......因此,如果您希望验证将数字视为强制性的,您可以使用 +(表示一个或多个)而不是 *(表示零个或多个)。这种情况就变成了:
[0-9]+\.[0-9]+
Run Code Online (Sandbox Code Playgroud)