【发布时间】:2014-01-27 17:33:58
【问题描述】:
我正在尝试检查高度是否有效。要有效,它必须是 1 或 1.4 或 1.0 或 1。等等,它不能是字符串、数字或小数旁边的任何字符。小数点不能位于字符串的开头,并且只能有 1 个小数点。我一直在尝试的正则表达式是:
"/^[0-9]+([\\,\\.][0-9]+)?$/"
但它不工作并且仍然接受字符串。任何帮助都会很棒,谢谢!
public static boolean HeightValid(String height)
{
boolean isHeightValid = true;
if(!height.matches("/^[0-9]+([\\,\\.][0-9]+)?$/") || height.length() < 1 || height.length() > 9)
{
isHeightValid = false;
}
else
{
double doubleHeight = Double.parseDouble(height);
DecimalFormat df = new DecimalFormat("#.00");
String decHeight = df.format(doubleHeight);
heightField.setText(decHeight);
}
return isHeightValid;
}
如果您需要更多信息,请添加评论,谢谢
【问题讨论】:
-
你为什么要为此使用正则表达式?
-
为什么要使用正则表达式?这不是它的真正用途。如果要查看字符串是否为 int,请使用内置的 int 解析函数。如果要查看是否为双精度,请使用双精度解析功能。放下巧克力香蕉,远离欧洲货币体系。 See also.(编辑:我把它误认为是 C#,durp。不过,注释仍然有效,只是函数名不成立。)
-
另外,可能会有帮助:stackoverflow.com/questions/8391979/…
-
Regex 是验证数字输入的完美选择。
-
所有建议使用内置解析函数而不是正则表达式的人请注意:OP 的正则表达式建议他希望在输入中允许逗号字符,而内置解析函数不允许允许。