import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(((\\+|0{2})\\s?[1-9]\\d{0,2})(\\s?(\\-\\s?)?)\\(?|0|\\()(0\\))?(0?[1-9](\\d{1,4}?|(\\d{1,2}\\s\\d{1,3})))(\\s?(\\-\\s?)?)(\\d{2,4}?\\s?(\\d{2,3}\\s)?\\d{2,5})$";
final String string = "^(((\\+|0{2})\\s?[1-9]\\d{0,2})(\\s?(\\-\\s?)?)\\(?|0|\\()\n"
+ "(0\\))?\n"
+ "(0?[1-9](\\d{1,4}?|(\\d{1,2}\\s\\d{1,3})))\n"
+ "(\\s?(\\-\\s?)?)\n"
+ "(\\d{2,4}?\\s?(\\d{2,3}\\s)?\\d{2,5})$\n\n"
+ "+11 89-123 12 12\n"
+ "+11 89 123 1234\n"
+ "+11 089 1234567\n"
+ "+11 789 123 123\n"
+ "+11 0789 123456\n"
+ "+11 89 1234567\n"
+ "+11 0123456789\n"
+ "00123456789012\n"
+ "0012345678901\n"
+ "+11 123456789\n"
+ "+123456789012\n"
+ "+12345678901\n"
+ "0789-123456\n"
+ "089-1234567\n"
+ "089 1234567\n"
+ "0123456789\n\n"
+ "0789 123456\n\n"
+ "00110 (0)789 1234567\n"
+ "0011(0)7891234567\n"
+ "0011 (0)7891234567\n\n"
+ "+11 (0)89 1234567\n"
+ "+11 (0)789 123456\n"
+ "+11 (0)123456789\n"
+ "0789-123456\n"
+ "089-1234567\n"
+ "089 1234567\n"
+ "0123456789\n\n"
+ "(0)789 123456\n"
+ "0(0)789 123456\n"
+ "001(0)789 123456\n"
+ "+1(0)789 123456\n\n"
+ "+11 79887 123456\n"
+ "+11 7988 7 123456\n"
+ "+11 798 87 123456\n"
+ "+11 79 887 123456\n"
+ "+11 7 9887 123456\n\n"
+ "+11789123456\n"
+ "00117891234567\n"
+ "+11 789 123456";
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