簡體   English   中英

正則表達式電話號碼模式

[英]regex telephone number pattern

我有3類電話號碼,分別是Golden,Special和Normal。 我正在嘗試做的是當用戶鍵入電話號碼時,它會自動確定屬於哪個類別的電話號碼。 讓我舉一個Golden類別編號的例子: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表示對第一個匹配(括號編輯)的反向引用,因此(\\d)(\\1)將連續匹配兩個相同的數字。

如果Java不支持這個,我建議你硬編碼,因為你只有3個類別。

你可以像(\\\\d)\\\\1那樣使用反向引用。 (例如(\\\\d)\\\\1\\\\d* )。

哪里

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

如果數字的長度不是一個問題,你可以使用它。 由於您使用的是Java,因此需要兩個斜杠。
String Golden = "(\\\\d)\\\\1\\\\d*";

如果數字的長度恰好是8

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

如果你想匹配五個重復的數字,
String Golden = "(\\\\d)\\\\1{4}\\\\d*";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM