如何只接受Java中用户的特定数字格式?

时间:2015-04-20 17:36:37

标签: java

如果格式正好是“xxx-xxx-xxxx”,其中x可以是任何数字,但只有数字,并且必须有破折号,分组。基本上,它应该接受电话号码。现在我有:

Scanner input = new Scanner(System.in);
String in = input.next(); // Stores user input as a string

if (in.contains("[a-zA-Z]") == false && in.length() == 12) {
    System.out.println("Number Accepted");
} else {
    System.out.println("Number Rejected");
}

目前,它会拒绝大于或小于12个字符的数字,但它会接受任何12个字符,即使它有字母。我也没有正确分组数字和破折号的解决方案,因为用户应该只能输入3个数字,然后是破折号,然后是3个数字,然后是破折号,最后是4个数字。

1 个答案:

答案 0 :(得分:1)

您可以使用Pattern来应用正则表达式:

Pattern pattern = Pattern.compile("^\d{3}-\d{3}-\d{4}$");
Scanner input = new Scanner(System.in);
String in = input.next(); // Stores user input as a string

if (pattern.matcher(in).matches())) {
    System.out.println("Number Accepted");
} else {
    System.out.println("Number Rejected");
}