import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?:\\+44\\s?|0)[1238]\\d\\s?(?:\\d\\s?){7,8}$";
final String string = "# Standard\n"
+ "01386 444400\n"
+ "01386444400\n"
+ "+441386444400\n"
+ "+44 1386 444400\n"
+ "+44 1386444400\n\n"
+ "# 5 Digit\n"
+ "01386 41204\n"
+ "0138641204\n"
+ "+44138641204\n"
+ "+44 1386 41204\n"
+ "+44 138641204\n\n"
+ "# 3 Digit area codes (e.g. London)\n"
+ "+442074343046\n"
+ "02074343046\n"
+ "020 74343046\n"
+ "020 7434 3046\n\n"
+ "# 4 Digit area codes (e.g. Leeds)\n"
+ "+441133971337\n"
+ "01133971337\n"
+ "0113 3971337\n\n"
+ "# Commercial\n"
+ "08451772266\n"
+ "0845 1772266\n\n"
+ "# Mobile number (should not match)\n"
+ "07999888777\n"
+ "+447999888777\n"
+ "07999 888 777\n"
+ "+44 7999888777\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