import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(\\n|\\s)(?:(?:\\+?(\\d{1}|\\d{2}|\\d{3})\\s*)\\s*(?:\\(\\s*(\\d{1}|\\d{2}|\\d{3})\\s*\\)|(\\d{1,3}))\\s*\\-?(?:\\(\\s*(\\d{1,3})\\s*\\)|(\\d{3}))\\s*\\-?(?:\\d{2}\\s*\\-?\\d{2}))";
final String string = "\n"
+ "+79996364778 rus\n"
+ "8 (918) 373-6633 rus\n"
+ "+1 650-798-2800 usa \n"
+ " 8(949)373-66-55 rus\n"
+ " +7 (961) 859-56-19 rus\n"
+ "+1 205-635-1136 usa\n"
+ "+22(909)333 4334\n"
+ "+7(985)5310868\n"
+ "+79855310868\n"
+ "88008454545\n"
+ "+55 11 99999-5555 Brazil\n"
+ "+593 7 282-3889 Ecuador\n"
+ "(+44) 0848 9123 456 UK\n"
+ "+1 284 852 5500 BVI\n\n"
+ "+1 345 9490088 Grand Cayman\n"
+ "+32 2 702-9200 Belgium\n"
+ "+65 6511 9266 Asia Pacific\n"
+ "+86 21 2230 1000 Shanghai\n"
+ "+9124 4723300 India\n"
+ "+821012345678 South Korea\n"
+ "And for your extension pleasure\n"
+ "+55 11 99999-5555 ramal 123 Brazil\n"
+ "+55 11 99999-5555 foo786544 Brazil\n\n"
+ "(?!\\b(0)\\1+\\b)(\\+?\\d{1,3})\\s?\\(?\\d{3}\\)?\\s?([. -]?)\\d{3}\\3\\d{4}";
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