Java - 正则表达式 - 需要1-12个月

Tim*_*Tim 4 java regex

我正在尝试为包含月数的字段构建正则表达式,当然,这只需要数字1-12.然而,对正则表达式来说,这对我来说有点新鲜,我只需要检查一下我是对的.它似乎工作正常.虽然我在假设这里的范围是正确的1-12允许这个范围内的任何数字,但我只是问,因为我以前只见过0-9.

[1-12]{1,2}
Run Code Online (Sandbox Code Playgroud)

Mur*_*ski 16

这可能会.两位数或一位数

1[0-2]|[1-9]
Run Code Online (Sandbox Code Playgroud)

编辑:如果您担心像55这样的数字使用此:

^(1[0-2]|[1-9])$
Run Code Online (Sandbox Code Playgroud)

添加^$表示字符串的开始和结束.使用https://regex101.com作为一个很好的学习工具.


Mat*_*all 9

不要只是一个正则表达式.只是不要.将字符串解析为aint,并检查该值是否在范围内.

boolean isMonthInRange(String monthInput)
{
    try
    {
        int value = Integer.parseInt(monthInput, 10);
        return value >= 1 && value <= 12;
    }
    catch (NumberFormatException e)
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

由于这是Java,我们可以在这个问题上抛出一大堆库而不是滚动自定义解决方案.至少,不要在条件中使用幻数(112).


Joa*_*rks 5

另一个建议:

\b(?:1[0-2]|[1-9])\b
Run Code Online (Sandbox Code Playgroud)

如果您只允许完全匹配,则可能不需要检查单词边界 - 但否则需要检查正则表达式。在以前的答案中将匹配例如 13 中的 1 和 3 作为两个单独的匹配项。