4

我有 3 类电话号码,即 Golden、Special 和 Normal。我正在尝试做的是当用户输入电话号码时,它会自动确定电话号码属于哪个类别。让我举一个黄金类别编号的示例:AA001234(AA 代表 2 位数字,具有相同的数字,如 11、22、33 等)。这是我得到的

public static void main(String[] args) {

    Scanner userinput = new Scanner(System.in);

    System.out.println("Enter Telephone Number");
    String nophone = userinput.next();

    String Golden = "(\\d{2})002345"; // <-- how to write the code if the user
    //enter the same digit for the first 2 number, it will belong to Golden category?
    String Special1 = "12345678|23456789|98765432|87654321|76543210";

    if (nophone.matches(Golden)) {
        System.out.println("Golden");
    }

    else if (nophone.matches(Special1)) {
        System.out.println("Special 1");
    }
    else {
        System.out.println("Normal");
    }
}
4

3 回答 3

2

我不确定 Java 是否支持完整的正则表达式实现,但如果支持,您可以使用:

(\d)(\1)002345

\1表示对第一个匹配项的反向引用(括号),因此(\d)(\1)将连续匹配两个相同的数字。

如果 Java 不支持这一点,我建议您对其进行硬编码,因为您只有 3 个类别。

于 2012-11-07T03:45:45.810 回答
1

您可以使用反向引用,例如(\\d)\\1. (例如(\\d)\\1\\d*)。

在哪里

  1. 第一个\\d表示数字
  2. \\1表示相同的数字和
  3. \\d*表示 0 个或多个数字。
于 2012-11-07T03:45:26.150 回答
1

如果数字的长度不是问题,您可以使用它。由于您使用的是 java,因此您需要两个斜杠。
String Golden = "(\\d)\\1\\d*";

如果数字的长度应该正好是八

String Golden = "(\\d)\\1\\d{6}";

如果要匹配五个重复的数字,
String Golden = "(\\d)\\1{4}\\d*";

于 2012-11-07T03:53:17.930 回答