import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?:(?:\\+|00)33[\\s.-]{0,3}(?:\\(0\\)[\\s.-]{0,3})?|0)[1-9](?:(?:[\\s.-]?\\d{2}){4}|\\d{2}(?:[\\s.-]?\\d{3}){2})$";
final String string = "~ Accepted ~\n"
+ "0123456789\n"
+ "01 23 45 67 89\n"
+ "01.23.45.67.89\n"
+ "0123 45.67.89\n"
+ "0033 123-456-789\n"
+ "0033(0)123456789\n"
+ "+33-1.23.45.67.89\n"
+ "+33 - 123 456 789\n"
+ "+33(0) 123 456 789\n"
+ "+33 (0)123 45 67 89\n"
+ "+33 (0)1 2345-6789\n"
+ "+33(0) - 123456789\n"
+ "--------------------------------\n"
+ "~ Rejected ~\n"
+ "012345678\n"
+ "01234567890\n"
+ "0+123456789\n"
+ "(0)123456789\n"
+ "01 23 45 67 89\n"
+ "--------------------------------\n"
+ "~ Accepted but strange ~\n"
+ "+33.-.123456789\n"
+ "+33.-.(0)-.-123456789\n"
+ "01 23.45-67.89\n";
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