我正在尝试确定变量 DegreeOfDifficulty
是否为“1.2”和“4.8”(含)之间的数值,并且不接受字符值。所以“1.0”、“4.9”、“a”和“!”无效; “1.2”、“4.8”、“4.0”和“4”有效。到目前为止我已经:
degreeOfDiffString.matches("^[1](\\.[2-9]?)?|^[2-3](\\.[0-9]?)?|[4](\\.[0-8]?)?"))
如果我输入一个字符,是否缺少某些东西会引发错误?
最佳答案
当可以避免时不要使用正则表达式。您实际上可以解析 DegreeOfDiffString 并获取数值(如果它是数字),然后检查上限和下限(1.2 到 4.8)。更容易编码并理解正在发生的事情。正则表达式使您的代码容易出错,如果您决定稍后更改边界,则必须重新编写正则表达式。
try
{
double d = Double.parseDouble(degreeOfDiffString);
if(d >= 1.2 && d <= 4.8)
{
return true; // valid
}
}
catch(NumberFormatException ex)
{
}
return false; // all other cases -> invalid
关于Java - 正则表达式有效条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16268626/