我有三类电话号码,分别为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");
}
}
答案 0 :(得分:2)
我不确定Java是否支持完整的正则表达式实现,但如果确实如此,则可以使用:
(\d)(\1)002345
\1
表示对第一个匹配(括号编辑)的反向引用,因此(\d)(\1)
将连续匹配两个相同的数字。
如果Java不支持此功能,我建议您对其进行硬编码,因为您只有3个类别。
答案 1 :(得分:1)
您可以使用(\\d)\\1
之类的反向引用。 (例如(\\d)\\1\\d*
)。
哪里
\\d
表示数字\\1
表示相同的数字和\\d*
表示0位或更多位。答案 2 :(得分:1)
如果数字的长度不是问题,你可以使用它。
由于您使用的是Java,因此需要两个斜杠。
String Golden = "(\\d)\\1\\d*";
如果数字的长度恰好为8
String Golden = "(\\d)\\1\\d{6}";
如果您想匹配五个重复的数字,
String Golden = "(\\d)\\1{4}\\d*";