【发布时间】:2022-11-01 16:03:00
【问题描述】:
我正在尝试验证电话号码。预期的有效电话号码为 +1 1234567890、+123 1234567890、+1 1234534 等。国家代码后没有括号和空格。我写了如下的正则表达式。但没有按预期工作。任何帮助,将不胜感激。
public class ValidatePhoneNumbers {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
checkNumber("+5555555555");// not a valid
checkNumber("+123 1234567890");//should be valid
checkNumber("+1 1234567890");//should be valid
checkNumber("+1 12345678905555");//should not be valid
}
protected static void checkNumber(String number) {
System.out.println(number + " : " + (
Pattern.matches("\\+\\d{1,3}[ ] [0-9]{1,10}$", number)
? "valid" : "invalid"
)
);
}
}
【问题讨论】:
-
+1 1234534在国家代码后仅 7 位也有效吗? -
@anubhava 是的。只有超过 10 个是无效的。给出了已编辑的示例代码 cmets。
-
好的,在这种情况下尝试:
^\+(?:\d|\d{3}) \d{1,10}$ -
@anubhava 你能把它添加为答案吗?它工作正常。