Java - 正则表达式有效条目

标签 java regex

我正在尝试确定变量 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/

相关文章:

mysql - 使用正则表达式更新 SQL 语句

javascript - 负先行正则表达式

javascript - 仅针对空白区域进行正则表达式验证;应该接受单词/字符之间的空格

java - Spring 休息 : when pathVariable matches multiple entities should spring return a list or throw error

java - 用JAVA解析JSON文件中包含的XML

java - HQL:交叉连接

java - Gradle - 即使打包在 jar 中也无法加载 Java 类

python - python 中 TfidfVectorizer 中 n-gram 的标记模式

java - 可以使用属性启用/禁用 Spring Boot @RestController 吗?

javascript - 仅用第二个字符替换两个字符的任意组合