import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(\\d{10,21})|(\\+\\d{1,3}|\\d{1,4}|\\(\\+\\d{1,3}\\)|\\(\\d{1,2}\\))(([ -.]\\d+){1,5}$|([ -.]\\d+){1,5}([ -.](ext\\.|x|extention))[ -.]\\d{1,5}$)";
final String string = "Mexico (01) 55 1234 5678\n"
+ "Mexico (55) 1234 5678\n"
+ "Germany +49 30 2415889\n"
+ "UK +44 20 7930 7530\n"
+ "U.S.A. +1 503-225-5555\n"
+ "U.S.A. +1 503.225.5555\n"
+ "U.S.A. +001 503 225 5555\n"
+ "South Africa +27 21 419 3715\n"
+ "South Africa (+27) 21 419 3715\n"
+ "Japan +81 3-3211-3677\n"
+ "Japan +81 0112716677\n"
+ "Netherlands +31 20 610 9067\n"
+ "France +33 1 44 52 71 73\n"
+ "Australia +61 2 9669 3885\n"
+ "Australia (06) 1234 1234\n"
+ "Australia 0444 123 123\n"
+ "Spain +34 934 12 70 31\n"
+ "Spain 934 12 70 31\n"
+ "Portugal +351 21 846 1081\n\n"
+ "+81 3-3211-3677 ext. 12\n"
+ "+81 3-3211-3677 x 12\n"
+ "+81 3-3211-3677 extention 12\n"
+ "1231231233";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html