检查字符串是否由Java中的5个数字组成

时间:2014-04-15 20:25:15

标签: java regex

在Java应用程序中,我需要检查给定的字符串

  • 仅包含数字0-9和
  • 正好是五位数

我的第一次尝试就是:

public static void main(String[] args) {

    String testString = "000000";
    String myPattern = "\\d{5}";

    Pattern validCharacterPattern = Pattern.compile(myPattern);
    Matcher matcher = validCharacterPattern.matcher(testString);
    boolean b = matcher.find();

    if (b) System.out.println("Valid");
    else System.out.println("Invalid");

}

然而,上述表达也适用于例如123456。我需要改变什么?

2 个答案:

答案 0 :(得分:6)

为了完整起见(即使问题已完全改变)

boolean b = matcher.find();

如果正则表达式包含在匹配字符串中的某处,则匹配。如果您使用matcher.matches,您将获得预期的行为,它必须与ENTIRE字符串匹配。

或者你可以跳过编译步骤(如果这个正则表达式将被多次使用,不推荐使用。)完全只写:

String regex = "\\d{5}";
String test = "123456";
if(test.matches(regex)){ ... };

这基本上就是你在原始问题中所拥有的。

答案 1 :(得分:1)

你错了

然而,上述表达式对于例如123456.我需要改变什么?

false的{​​{1}}。


示例代码:

123456

输出

    String s = "123456";
    String regex = "\\d{5}";
    if (s.matches(regex))
        System.out.println("found");
    else
        System.out.println("not found");

问题已被编辑。现在尝试使用正则表达式中的开始和结束。

not found

输出:

    String testString = "000000";
    String myPattern = "^(\\d{5})$";

    Pattern validCharacterPattern = Pattern.compile(myPattern);
    Matcher matcher = validCharacterPattern.matcher(testString);
    boolean b = matcher.find();

    if (b)
        System.out.println("Valid");
    else
        System.out.println("Invalid");