用于验证电话号码的Java正则表达式

Duc*_*cky 11 java regex

在下面的代码中,我试图让输出为电话号码的不同格式,如果它是有效的.我想出了一切,但第11行的Java正则表达式代码是字符串模式.

 import java.util.regex.*;

  public class MatchPhoneNumbers {
   public static void main(String[] args) {           
     String[] testStrings = {               
               /* Following are valid phone number examples */             
              "(123)4567890", "1234567890", "123-456-7890", "(123)456-7890",
              /* Following are invalid phone numbers */ 
              "(1234567890)","123)4567890", "12345678901", "(1)234567890",
              "(123)-4567890", "1", "12-3456-7890", "123-4567", "Hello world"};

             // TODO: Modify the following line. Use your regular expression here
              String pattern = "^/d(?:-/d{3}){3}/d$";    
             // current pattern recognizes any string of digits           
             // Apply regular expression to each test string           
             for(String inputString : testStrings) {
                System.out.print(inputString + ": "); 
                if (inputString.matches(pattern)) {     
                    System.out.println("Valid"); 
                } else {     
                    System.out.println("Invalid"); 
                }
             }
      }
  }
Run Code Online (Sandbox Code Playgroud)

Pat*_*ker 12

基本上,您需要采用3或4种不同的模式并将它们与"|"组合:

String pattern = "\\d{10}|(?:\\d{3}-){2}\\d{4}|\\(\\d{3}\\)\\d{3}-?\\d{4}";
Run Code Online (Sandbox Code Playgroud)
  • \d{10} 比赛1234567890
  • (?:\d{3}-){2}\d{4} 比赛123-456-7890
  • \(\d{3}\)\d{3}-?\d{4} 匹配(123)456-7890或(123)4567890

  • 如果电话号码包含国家/地区代码(例如:** + 91-123-456-7890 **或** + 911-22228888 **),我们如何确定如何识别这些电话号码类型的模式。 (2认同)

Ash*_*oti 8

考虑有关电话号码格式的这些事实:-

\n\n
    \n
  1. 国家/地区代码前缀以 \xe2\x80\x98+\xe2\x80\x99 开头,包含 1 到 3 位数字
  2. \n
  3. 号码的最后部分,也称为用户号码,是所有号码中的 4 位数字
  4. \n
  5. 大多数国家/地区的电话号码都是除去国家/地区代码后的 10 位数字。一般观察是,排除国家/地区代码后,所有国家/地区的电话号码都在 8 到 11 位数字之间。
  6. \n
\n\n
String allCountryRegex = "^(\\\\+\\\\d{1,3}( )?)?((\\\\(\\\\d{1,3}\\\\))|\\\\d{1,3})[- .]?\\\\d{3,4}[- .]?\\\\d{4}$";\n
Run Code Online (Sandbox Code Playgroud)\n\n

让我们打破正则表达式并理解,

\n\n
    \n
  • ^表达的开始
  • \n
  • (\\\\+\\\\d{1,3}( )?)?是 1 到 3 位数字之间的可选国家/地区代码匹配,前缀为“+”符号,后跟空格或不带空格。
  • \n
  • ((\\\\(\\\\d{1,3}\\\\))|\\\\d{1,3}是 1 到 3 位数字的强制组,带或不带括号,后跟连字符、空格或不带空格。
  • \n
  • \\\\d{3,4}[- .]?是 3 或 4 位数字的强制组,后跟连字符、空格或无空格
  • \n
  • \\\\d{4}是最后 4 位数字的强制组
  • \n
  • $表达式结束
  • \n
\n\n

此正则表达式模式匹配大多数国家/地区的电话号码格式,包括:-

\n\n
        String Afghanistan      = "+93 30 539-0605";\n        String Australia        = "+61 2 1255-3456";\n        String China            = "+86 (20) 1255-3456";\n        String Germany          = "+49 351 125-3456";\n        String India            = "+91 9876543210";\n        String Indonesia        = "+62 21 6539-0605";\n        String Iran             = "+98 (515) 539-0605";\n        String Italy            = "+39 06 5398-0605";\n        String NewZealand       = "+64 3 539-0605";\n        String Philippines      = "+63 35 539-0605";\n        String Singapore        = "+65 6396 0605";\n        String Thailand         = "+66 2 123 4567";\n        String UK               = "+44 141 222-3344";\n        String USA              = "+1 (212) 555-3456";\n        String Vietnam          = "+84 35 539-0605";\n
Run Code Online (Sandbox Code Playgroud)\n\n

来源: https: //codingnconcepts.com/java/java-regex-for-phone-number/

\n


小智 5

国际电话号码正则表达式

String str=  "^\\s?((\\+[1-9]{1,4}[ \\-]*)|(\\([0-9]{2,3}\\)[ \\-]*)|([0-9]{2,4})[ \\-]*)*?[0-9]{3,4}?[ \\-]*[0-9]{3,4}?\\s?";


 if (Pattern.compile(str).matcher(" +33 - 123 456 789 ").matches()) {
        System.out.println("yes");
    } else {
        System.out.println("no");
    } 
Run Code Online (Sandbox Code Playgroud)