在下面的代码中,我试图让输出为电话号码的不同格式,如果它是有效的.我想出了一切,但第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考虑有关电话号码格式的这些事实:-
\n\nString allCountryRegex = "^(\\\\+\\\\d{1,3}( )?)?((\\\\(\\\\d{1,3}\\\\))|\\\\d{1,3})[- .]?\\\\d{3,4}[- .]?\\\\d{4}$";\nRun Code Online (Sandbox Code Playgroud)\n\n让我们打破正则表达式并理解,
\n\n^表达的开始 (\\\\+\\\\d{1,3}( )?)?是 1 到 3 位数字之间的可选国家/地区代码匹配,前缀为“+”符号,后跟空格或不带空格。((\\\\(\\\\d{1,3}\\\\))|\\\\d{1,3}是 1 到 3 位数字的强制组,带或不带括号,后跟连字符、空格或不带空格。\\\\d{3,4}[- .]?是 3 或 4 位数字的强制组,后跟连字符、空格或无空格\\\\d{4}是最后 4 位数字的强制组$表达式结束 此正则表达式模式匹配大多数国家/地区的电话号码格式,包括:-
\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";\nRun 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)
| 归档时间: |
|
| 查看次数: |
37623 次 |
| 最近记录: |