首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -正则表达式有效条目

Java -正则表达式有效条目
EN

Stack Overflow用户
提问于 2013-04-29 06:20:55
回答 4查看 103关注 0票数 0

我正在尝试确定变量是否degreeOfDifficulty一个介于"1.2“和"4.8”(包含)之间的数值,并且不接受字符值。因此,"1.0“、"4.9”、"a“和"!”无效;"1.2“、"4.8”、"4.0“、"4”有效。到目前为止,我有:

代码语言:javascript
复制
degreeOfDiffString.matches("^[1](\\.[2-9]?)?|^[2-3](\\.[0-9]?)?|[4](\\.[0-8]?)?"))

如果我输入一个字符,我是否遗漏了一些东西而导致错误抛出?

EN

回答 4

Stack Overflow用户

发布于 2013-04-29 06:29:13

在可以避免的情况下,不要使用正则表达式。实际上,您可以解析degreeOfDiffString并获取数值(如果它是数值),然后检查上下界(1.2到4.8)。更容易编码和理解正在发生的事情。正则表达式使您的代码容易出错,如果您决定稍后更改边界,则必须重新处理您的正则表达式。

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2013-04-29 06:24:30

为此,您不需要使用正则表达式。只需使用Double.parseDouble()解析您的degreeOfDiffString,然后检查double是否在1.2和4.8之间(包括1.2和4.8)。

示例(未经测试,只是我现在输入的内容):

代码语言:javascript
复制
try
{
    String degreeOfDiffString = "3.4";
    double number = Double.parseDouble(degreeOfDiffString);
    if (number < 1.2 || number > 4.8) System.out.println("Invalid difficulty.");
    else
    {
        // Do stuff
    }
} catch (Exception e)
{
    // Handle exception
}

如果字符串中有随机内容,如"!“或者一些字母,那么应该抛出一个NumberFormatException,你可以处理它。

票数 2
EN

Stack Overflow用户

发布于 2013-04-29 06:29:38

目前的模式是不正确的。

有一个问题是,当你真正指的是14时,你会使用[1][4]

您必须在模式的开头只放置一个^;其他插入符号是不正确的。此外,Java matches()方法将整个模式与主题进行匹配,因此插入符号是多余的。

按照小数点匹配的方式,它既接受第一个数字后面的一个空句点,也接受后面跟着一个数字的句号。这是你想要的吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16268626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档