4

ゴールデン、スペシャル、ノーマルの 3 つのカテゴリの電話番号があります。私がやろうとしているのは、電話番号のユーザーキーが、電話番号がどのカテゴリに属しているかを自動的に判断することです。ゴールデン カテゴリ番号の一例を挙げましょう: AA001234 (AA は、11、22、33 などの同じ番号を持つ 2 桁を表します)。ここで私が得たもの

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)2 つの同じ数字が連続して一致します。

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 を使用しているため、2 つのスラッシュが必要です。
String Golden = "(\\d)\\1\\d*";

数値の長さが正確に 8 の場合

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

5 つの繰り返し数字を一致させたい場合は、
String Golden = "(\\d)\\1{4}\\d*";

于 2012-11-07T03:53:17.930 に答える