我需要一个正则表达式,我认为看一个字符串是否只是一个双字符,但它可以是任何长度,任何建议?
答案 0 :(得分:5)
您是否可以尝试将字符串转换为double,如果失败则捕获异常?
try{
Double aDouble = Double.parseDouble(aString);
}catch (NumberFormatException nfe){
// handle it not being a Double here
}
答案 1 :(得分:3)
双精度匹配以下正则表达式:
^[-+]?\d*\.?\d+([eE][-+]?\d+)?$
请注意,对于Java String,您需要转义反斜杠,而\d
是[0-9]
的简写。
答案 2 :(得分:0)
尝试^(\d+|\d+\.|\d*\.\d+)[dD]?$
答案 3 :(得分:0)
如果我正确理解你的意思,这个正则表达式可能会起作用
"/^[+-]?\d+\.\d+$/"
英文 - > A +或 - 符号(可能)后跟一个或多个数字后跟a。 (小数点)后跟一个或多个数字。此正则表达式假定数字未使用逗号格式化,并假设小数点分隔符是一个在所有语言环境中都不为真的点。
答案 4 :(得分:0)
我从perldoc faq4偷走了这个表达式 - “是一个十进制数字。”
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
Pattern pattern =
Pattern.compile("^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)$");
System.out.println(((Boolean) pattern.matcher("1").find()).toString());
System.out.println(((Boolean) pattern.matcher("1.1").find()).toString());
System.out.println(((Boolean) pattern.matcher("abc").find()).toString());
}
}
打印:
true
true
false
答案 5 :(得分:0)
您可能还想查看Apache Commons的NumberUtils
http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/math/NumberUtils.html