正则电话号码模式



我有3种金色,特殊和正常的电话号码。我要做的是当电话号码中的用户密钥时,它将自动确定电话号码属于哪个类别。让我举一个黄金类别编号的示例: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");
    }
}

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

(d)(1)002345

1表示回到第一个匹配(括号 - ed),因此(d)(1)将连续匹配两个相同的数字。

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

您可以使用 (\d)\1之类的背景。(例如(\d)\1\d*)。

其中

  1. 第一个\d表示数字
  2. \1表示相同的数字和
  3. \d*表示0或更多数字。

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

如果数字的长度应完全是八个

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

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

最新更新