import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?=(?:\\+|0{2})?(?:(?:[\\(\\-\\)\\t\\f ]*\\d){7,10})?(?:[\\t\\f ]?\\d{2,3})(?:[\\-\\s]?[ext]{1,3}[\\-\\t\\f ]?\\d{1,4})?$)((?:\\+|0{2})\\d{0,3})?(?:[\\-\\t\\f ]?)(\\(0?\\d{1,3}\\)|\\d{0,3})(?:[\\-\\t\\f ]{0,2}\\d){3,}(?:[\\-\\s]?(?:x|ext)[\\-\\t\\f ]?(\\d{1,4}))?$";
final String string = "123456789\n"
+ "1234567890123456\n"
+ "1234567890123\n\n"
+ "0091234567890\n"
+ "+9 123-4567890-x321\n"
+ "+9-123-456-7890\n"
+ "+9 123 4 5 6-7890x1234\n"
+ "009-(123)-456-7890 ext4321\n"
+ "0091234567890x1234\n"
+ "+9-123-456-7890x12345\n"
+ "+9-123-456-7890 ext 1234\n"
+ "0027-123-456-7890\n"
+ "+27-123-456-7890\n"
+ "+9(123)4567890\n"
+ "911\n\n"
+ " (0)123456789\n"
+ "+34123456789\n"
+ "+34 (0)123456789\n"
+ " +340123456789\n"
+ "+34 123 456 789\n"
+ "+34 1 23 45 67 89\n"
+ "001230123456789\n"
+ "ext1234\n"
+ "++34123456789\n"
+ "00-0-----000\n"
+ "01 555012345\n"
+ "001-555012345\n"
+ "+012345678\n"
+ "112\n"
+ "12(34567890\n"
+ "123)456789012345\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
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