我试图编写一个简单的正则表达式来匹配实数,如下所示:
[+-]?[\\d]+[\\.]?[\\d]*
正则表达式序列的说明 - 可选的 + 或 - 符号,1 个或多个数字,可选句点,0 个或多个数字
问题是,如果字符串中包含单个数字,则它匹配字符串(例如,找到 abc23 的匹配项)。但我只想匹配实数。
最佳答案
在 matches
方法中使用以下正则表达式。
[+-]?\\d+(?:\\.\\d+)?
代码:
System.out.println("abc".matches("[+-]?\\d+(?:\\.\\d+)?"));
System.out.println("abc123".matches("[+-]?\\d+(?:\\.\\d+)?"));
System.out.println("12.".matches("[+-]?\\d+(?:\\.\\d+)?"));
System.out.println("+65657".matches("[+-]?\\d+(?:\\.\\d+)?"));
System.out.println("-8.99".matches("[+-]?\\d+(?:\\.\\d+)?"));
输出:
false
false
false
true
true
第三个示例的输出为 false
,因为数字以点结尾。我认为这不太正确。
关于java - Java实数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25830036/