You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java正则验证特定格式电话号码失效,求解决方案

修复电话号码验证正则表达式问题

你的正则表达式存在两个核心问题:

  • 错误要求国家代码后必须有两个空格([ ] 部分重复定义了空格),不符合"仅允许一个空格"的规则;
  • 语法冗余,\\d和[0-9]功能等价,且Pattern.matches默认匹配整个字符串,无需额外的$锚点。

修正后的正则表达式

使用以下正则即可满足需求:

"\\+\\d{1,3} \\d{1,10}"

正则各部分说明:

  • \\+:匹配电话号码开头的加号
  • \\d{1,3}:匹配1-3位的国家代码数字
  • :匹配国家代码后的一个空格(严格符合要求)
  • \\d{1,10}:匹配1-10位的电话号码主体部分

修正后的完整代码

public class ValidatePhoneNumbers {

    public static void main(String[] args) {
        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} \\d{1,10}", number)
                        ? "valid" : "invalid"
        ));
    }
}

测试结果

运行后会输出:

+5555555555 : invalid
+123 1234567890 : valid
+1 1234567890 : valid
+1 12345678905555 : invalid

完全符合你的预期要求。

内容的提问来源于stack exchange,提问作者JAVA_CAT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:35:26