【问题标题】:US phone number format validation with regex使用正则表达式验证美国电话号码格式
【发布时间】:2015-07-07 06:30:50
【问题描述】:

我必须编写一个正则表达式来验证以下格式的美国电话号码:

(123).123.1234 -- true 
 1234567890 -- true 
(123)1231234 -- true 
(123)-456-7890 -- true 
(123) 123 1234 -- true 
123   123    1234 -- true 
(123). 456. 7890 -- true 
(123)- 456- 7890 -- true.

我想出了这样的东西:

[\\(]?\\d{3}[\\)]?[-.]?[\\s]*\\d{3}[-.]?[\\s]*\\d{4}

不幸的是,根据我的正则表达式,以下值也是有效的:

123.123-1234
(123)-123.1234
123.  123-  1234

【问题讨论】:

    标签: java regex string validation


    【解决方案1】:

    您可以使用以下正则表达式匹配这些数字:

    String rx = "[\\(]?\\d{3}[\\)]?([-.]?)\\s*\\d{3}\\1\\s*\\d{4}";
    

    IDEONE demo

    ([-.]?) 构造是一个capturing group捕获并将匹配的文本存储在某个缓冲区中,然后我们可以稍后使用\\1backreference 访问该文本。

    请注意,如果您需要整个字符串匹配,请使用带有正则表达式的 String.matches() 方法。

    【讨论】:

    • @user1734253 这与我的相同,但我在发布此答案前 1 分钟回答了。那你为什么接受这个?
    • 而且这个正则表达式也会匹配(123). 454. <space><space><space> 6756。我的意思是空间作为空白空间。
    • @AvinashRaj:不一样。请注意,在您的正则表达式中,\s* 包含在第一个捕获组中,这会阻止有效匹配。
    • 以上匹配有效吗?
    • @AvinashRaj:我猜你的问题的答案在 OP 问题中:(123). 456. 7890 -- true
    【解决方案2】:

    为此,您需要使用捕获组和反向引用。

    \\(?\\d{3}\\)?([-.]?[\\s]*)\\d{3}\\1\\d{4}
    

    必要时添加锚点。

    ^\\(?\\d{3}\\)?([-.]?[\\s]*)\\d{3}\\1\\d{4}$
    

    DEMO

    【讨论】:

      【解决方案3】:

      你可以试试这个。您将获得所有类型的电话号码。

      public static void contact(String line, HashSet<String> hs) {
      
              Pattern pattern = Pattern.compile("(\\d{1}\\s\\d{2}\\s\\d{8})"
                      + "|"
                      + "(\\d{2}\\s\\d{2}\\s\\d{8})"
                      + "|"
                      + "(\\(\\d{3}\\)\\s\\d{3}-\\d{4})"
                      + "|"
                      + "(\\d{1}\\s\\(\\d{3}\\)\\s\\d{3}-\\d{4})"
                      + "|"
                      + "(\\d{1}\\s\\(\\d{3}\\)\\s\\d{3}\\s\\d{4})"
                      + "|"
                      + "(\\d{2}\\s\\(\\d{3}\\)\\s\\d{3}\\s\\d{4})"
                      + "|"
                      + "(\\d{2}\\s\\(\\d{3}\\)\\s\\d{3}-\\d{4})"
                      + "|"
                      + "(\\(\\d{2}\\)\\-\\d{10})"
                      + "|"
                      + "(\\(\\d{2}\\)\\s\\d{10})"
                      + "|"
                      + "(\\(\\d{4}\\)\\s\\d{6})"
                      + "|"
                      + "(\\(\\+(\\d{2}\\s\\d{4}\\))\\s\\d{6})"//(+91 2632) 233261  
                      + "|"
                      + "(\\(\\+(\\d{3}\\))\\s\\d{3}\\s\\d{3}\\s\\d{3})"//(+351) 252 300 300
                      + "|"
                      + "(\\(\\+(\\d{2}\\s\\-\\d{2}\\))\\s\\d{8})"//(+91 -22) 26559178 
                      + "|"
                      + "(\\(\\d{2}\\)\\s\\-\\s\\(\\d{2}\\)\\s\\-\\s\\d{8})"//+(91) - (79) - 26447736 
                      + "|"
                      + "(\\(\\+(\\d{2}\\))\\-\\d{2}\\s\\d{8})"//(+91)-80 22932900
                      + "|"
                      + "(\\(\\d{3}\\s\\d{3}\\)\\s\\d{8})"
                      + "|"
                      + "(\\(\\d{2}\\)\\-\\(\\d{2}\\)\\-\\s\\d{8})"//+(91)-(22)- 42957551
                      + "|"
                      + "(\\d{2}\\s\\(\\d{2}\\)\\s\\d{8})"
                      + "|"
                      + "(\\d{3}-\\d{3}-\\d{4})"
                      + "|"
                      + "(\\[\\+\\d{1}]\\s\\d{3}-\\d{3}-\\d{4})" // [+1] 858-952-7570
                      + "|"
                      + "(\\(\\d{3}\\)\\-\\d{3}-\\d{4})"
                      + "|"
                      + "(\\d{2}-\\d{2}-\\d{8})"
                      + "|"
                      + "(\\d{2}-\\d{5}\\s\\d{5})"
                      + "|"
                      + "(\\d{2}\\s\\d{5}\\s\\d{5})"
                      + "|"
                      + "(\\d{2}\\s\\-\\s\\d{2}\\s\\-\\s\\d{8})"
                      + "|"
                      + "(\\d{2}-\\d{4}-\\d{6})"
                      + "|"
                      + "(\\d{2}\\s\\-\\s\\d{4}\\s\\-\\s\\d{6})"
                      + "|"
                      + "(\\d{1}-\\d{3}-\\d{3}-\\d{4})"
                      + "|"
                      + "(\\d{2}-\\d{3}-\\d{3}-\\d{4})"
                      + "|"
                      + "(\\d{1}\\s\\d{3}-\\d{3}-\\d{4})"
                      + "|"
                      + "(\\d{2}\\s\\d{3}-\\d{3}-\\d{4})"
                      + "|"
                      + "(\\d{3}-\\d{7})"
                      + "|"
                      + "(\\d{2}-\\d{10})"
                      + "|"
                      + "(\\d{1}\\-\\d{3}-\\d{7})"
                      + "|"
                      + "(\\d{2}\\-\\d{3}-\\d{7})"
                      + "|"
                      + "(\\d{1}\\s\\d{3}-\\d{7})"
                      + "|"
                      + "(\\d{2}\\s\\d{3}-\\d{7})"
                      + "|"
                      + "(^(\\+\\d{2}\\s)?\\(?\\d{3}\\)?[\\s.-]\\d{3}[\\s.-]\\d{4}$)"
                      + "|"
                      + "(\\d{1}\\s\\d{3}\\s\\d{3}\\s\\d{4})"
                      + "|"
                      + "(\\d{2}\\s\\d{3}\\s\\d{2}\\s\\d{2}\\s\\d{3})"
                      + "|"
                      + "(\\d{3}\\s\\d{2}\\s\\d{3}\\s\\d{3})"
                      + "|"
                      + "(\\d{3}\\s\\d{2}\\s\\d{3}\\s\\d{4})"
                      + "|"
                      + "(\\d{2}\\s\\d{3}\\s\\d{3}\\s\\d{4})"
                      + "|"
                      + "(\\d{3}\\s\\d{3}\\s\\d{4})"
                      + "|"
                      + "(\\(\\d{3}\\)\\s\\d{3}\\s\\d{4})"
                      + "|"
                      + "(\\d{1}\\s\\d{5}\\s\\d{5})"
                      + "|"
                      + "(\\d{2}\\s\\d{1}\\s\\d{4}\\s\\d{4})"
                      + "|"
                      + "(\\d{2}\\s\\d{2}\\s\\d{3}\\s\\d{4})"
                      + "|"
                      + "(\\d{2}\\s\\d{2}\\s\\d{3}\\s\\d{3})"
                      + "|"
                      + "(\\d{2}\\s\\d{3}\\s\\d{3}\\s\\d{3})"
                      + "|"
                      + "(\\d{2}\\s\\d{3}\\s\\d{7})"
                      + "|"
                      + "(\\d{1}\\s\\d{3}\\s\\d{7})"
                      + "|"
                      + "(\\d{3}\\s\\d{3}\\s\\d{2}\\s\\d{2})"
                      + "|"
                      + "(\\d{2}\\s\\d{2}\\s\\d{3}\\s\\d{2}\\s\\d{2})"
                      + "|"
                      + "(\\d{2}\\s\\d{2}\\s\\d{4}\\s\\d{4})"
                      + "|"
                      + "(\\d{2}\\s\\(\\d{2}\\)\\s\\d{4}\\s\\d{4})"
                      + "|"
                      + "(\\d{2}\\-\\d{2}\\-\\d{4}\\s\\d{4})"
                      + "|"
                      + "(\\d{3}\\.\\d{3}\\.\\d{4})"
                      + "|"
                      + "(\\d{2}\\s\\d{3}\\.\\d{3}\\.\\d{4})"
                      + "|"
                      + "(\\d{1}\\.\\d{3}\\s\\d{3}\\s\\d{4})"
                      + "|"
                      + "(\\d{5}\\s\\d{9})"
                      + "|"
                      + "(\\d{4}\\(\\d{1}\\)\\d{4}\\s\\d{6})" // 0044(0)1283 225111 
                      + "|"
                      + "(\\d{2}\\s\\(\\d{1}\\)\\s\\d{3}\\s\\d{3}\\s\\d{4})"//+44 (0) 161 306 4114
                      + "|"
                      + "(\\d{3}\\s\\(\\d{1}\\)\\s\\d{7})"
                      + "|"
                      + "(\\d{2}\\s\\(\\d{1}\\)\\s\\d{4}\\s\\d{3}\\s\\d{3})" 
                      + "|"
                      + "(\\d{2}\\s\\(\\d{1}\\)\\s\\d{2}\\.\\d{2}\\.\\d{2}\\.\\d{2})"//+32 (0) 11.26.24.20 
                      + "|"
                      + "(\\d{2}\\s\\(\\d{1}\\)\\s\\d{3}\\-\\s\\d{3}\\s\\d{2}\\s\\d{2})"//+49 (0) 241- 413 42 73
                      + "|"
                      + "(\\d{2}\\s\\(\\d{1}\\)\\s\\d{3}\\-\\d{3}\\s\\d{2}\\s\\d{2})"
                      + "|"
                      + "(\\d{2}\\s\\(\\d{1}\\)\\d{3}\\s\\d{2}\\s\\d{5})"//+44 (0)113 34 33705 
                      + "|"
                      + "(\\d{2}\\s\\(\\d{1}\\)\\d{1}\\s\\d{2}\\s\\d{2}\\s\\d{2}\\s\\d{2})"//+33 (0)1 44 08 19 00 
                      + "|"
                      + "(\\d{2}\\s\\(\\d{1}\\)\\s\\d{4}\\s\\d{6})"    //+44 (0) 1204 669033  
                      + "|"
                      + "(\\d{2}\\s\\(\\d{1}\\)\\d{4}\\s\\d{6})"
                      + "|"
                      + "(\\d{4}\\s\\d{3}\\s\\d{4})"
                      + "|"
                      + "(\\d{4}-\\d{3}-\\d{4})"
                      + "|"
                      + "(\\d{3}-\\d{8})"
                      + "|"
                      + "(\\d{3}-\\d{2}-\\d{5})"
                      + "|"
                      + "(\\d{2}\\s\\d{2}\\s\\d{4}-\\d{4})"
                      + "|"
                      + "(\\d{2}\\-\\d{2}\\. ISSN \\d{4}-\\d{4})"
                      + "|"
                      + "(\\d{4}\\-\\d{4}\\-\\d{1}-\\d{3})"
                      + "|"
                      + "(\\d{2}\\s\\d{4}\\s\\d{4})"
                      + "|"
                      + "(\\d{3}\\s\\d{1}\\s\\d{7})"
                      + "|"
                      + "(\\d{13})"
                      + "|"
                      + "(\\d{12})"
                      + "|"
                      + "(\\d{11})"
                      + "|"
                      + "(\\d{10})"
                      + "|"
                      + "(\\d{9})"
                      + "|"
                      + "(\\d{2}\\s\\d{10})"
                      + "|"
                      + "(\\d{1}\\s\\d{10})"
                      + "|"
                      + "(^(?:(?:\\+?1\\s*(?:[.-]\\s*)?)?(?:\\(\\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\\s*\\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\\s*(?:[.-]\\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\\s*(?:[.-]\\s*)?([0-9]{4})(?:\\s*(?:#|x\\.?|ext\\.?|extension)\\s*(\\d+))?$)");
      
                  Matcher m = pattern.matcher(line);
      
      
                  while(m.find()) {
                       System.out.println("Contact Number---->"+"'"+m.group(0)+"'");
                  }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-04
        • 1970-01-01
        • 1970-01-01
        • 2011-08-16
        • 2015-11-22
        • 2020-05-02
        • 2018-01-23
        相关资源
        最近更新 更多