使用正则表达式验证美国电话号码格式

时间:2015-07-07 06:30:51

标签: java regex string validation

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

(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

3 个答案:

答案 0 :(得分:1)

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

div

请参阅IDEONE demo

String rx = "[\\(]?\\d{3}[\\)]?([-.]?)\\s*\\d{3}\\1\\s*\\d{4}"; 构造是capturing group 捕获并将匹配的文本存储在某个缓冲区中,然后我们可以使用([-.]?) {{访问该文本3}}以后。

请注意,如果您需要整个字符串匹配,请使用\\1方法和正则表达式。

答案 1 :(得分:0)

为此,您需要使用捕获组和后退。

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

必要时添加锚点。

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

DEMO

答案 2 :(得分:0)

你可以试试这个。你会得到所有类型的电话号码。

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)+"'");
            }