希望是一个快速的问题.我正在尝试验证双倍.确保它对小数点后一位是正的.
好的值:
0.1,2.5,100.1,1,55坏值:-0.1,1.123,1.12,abc,00012.1
所以我在这里尝试了Regex:
public boolean isValidAge(String doubleNumber)
{
DoubleValidator doubleValidator = new DoubleValidator();
return doubleValidator.isValid(doubleNumber,"*[0-9]\\\\.[0-9]");
}
Run Code Online (Sandbox Code Playgroud)
我也试过:"*[0-9].[0-9]","\\\\d+(\\\\.\\\\d{1})?","[0-9]+(\\\\.[0-9]?)?"
似乎没有什么工作.我一直在用 org.apache.commons.validator.routines.DoubleValidator
有没有其他方法可以解释为什么这些正则表达式不起作用?我不必使用正则表达式.
谢谢
这将匹配一个数字,只有一个数字,带有一个多位小数点前小数点,没有前导零(s),或只是一个零,可选一个带有一个十进制数字的小数点.包括字符串开头/结尾的匹配,因此它不匹配较大字符串中的数字(更新为不接受前导零,信用@Nicklas A):
^([1-9]\d*|0)(\.\d)?$
Run Code Online (Sandbox Code Playgroud)
请改用java.util.regex.Pattern库.
http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html
因为你正在将正则表达式放入一个字符串中,所以一定要逃避反斜杠
"^([1-9]\\d*|0)(\\.\\d)?$"
Run Code Online (Sandbox Code Playgroud)
我建议你在这里阅读正则表达式,它们是一个重要的工具,可以说"在你的腰带下".
http://www.regular-expressions.info/