import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?:(52\\-)|(1\\-))?(\\()?(?(1)[0-9]{2,3}|[2-9][0-9]{2})(?(3)\\)\\s?|(\\-|[.]|\\s|))(?(1)[0-9]|[2-9])[0-9]{2}(?(4)\\4|(?:\\-|[.]|\\s)?)[0-9]{4}(\\s?(?:x|ext|ext.|extension|Ext|Ext.|Extension|#)\\s?[0-9]+)?$";
final String string = "Regular valid formats\n\n"
+ "225-586-7777\n"
+ "(223)249-4444\n"
+ "(223) 234-3344\n"
+ "223.456.2222\n"
+ "2253451111\n"
+ "223 334 4444\n\n"
+ "1-325-586-7777\n"
+ "1-(923)249-4444\n"
+ "1-(923) 234-3344\n"
+ "1-923.456.2222\n"
+ "1-9253451111\n"
+ "1-923 234 4444\n\n"
+ "52-125-586-7777\n"
+ "52-(123)249-4444\n"
+ "52-(123) 234-3344\n"
+ "52-123.456.2222\n"
+ "52-1253451111\n"
+ "52-123 134 4444\n\n"
+ "Valid formats with extensions\n\n"
+ "1-800-661-3696 x14700\n"
+ "1-800-661-3696x14700\n"
+ "1-800-661-3696 Extension 14700\n"
+ "1-800-661-3696 ext14700\n\n"
+ "325-586-7777 x123\n"
+ "(323)249-4444x123\n"
+ "(323) 234-3344 Ext 123\n"
+ "323.456.2222 ext 124\n"
+ "3253451111ext. 123\n"
+ "323 334 4444extension234\n"
+ "(223)456 7891 x 123\n"
+ "(223)456 7891 ext 123\n"
+ "(223)456 7891 ext. 123\n"
+ "(223)456 7891 Ext 123\n"
+ "(223)456 7891 Ext. 123\n"
+ "(910)456-8970 x12\n"
+ "(910)456-8970 #12\n"
+ "(910)456-8970 extension12456\n"
+ "(910)456-8970 Extension 12456\n\n"
+ "Invalid formats\n\n"
+ "444000-1111\n"
+ "444-0001111\n"
+ "444.000-1111\n"
+ "444000 1111\n"
+ "444 0001111\n"
+ "444 000.1111\n"
+ "444.0001111\n"
+ "444000.1111\n"
+ "444-000.1111\n"
+ "(4440001111\n"
+ "444)0001111\n"
+ "440001111\n"
+ "444000111111\n\n"
+ "125-586-7777\n"
+ "(123)249-4444\n"
+ "(123) 234-3344\n"
+ "123.456.2222\n"
+ "1253451111\n"
+ "123 134 4444\n\n"
+ "125-586-7777\n"
+ "(123)249-4444\n"
+ "(123) 234-3344\n"
+ "123.456.2222\n"
+ "1253451111\n"
+ "123 134 4444\n\n"
+ "Invalid formats with extensions\n\n"
+ "12-125-586-7777\n"
+ "12-(123)249-4444\n"
+ "12-(123) 234-3344\n"
+ "12-123.456.2222\n"
+ "12-1253451111\n"
+ "12-123 134 4444\n\n"
+ "12-444000-1111\n"
+ "12-444-0001111\n"
+ "12-444.000-1111\n"
+ "12-444000 1111\n"
+ "12-444 0001111\n"
+ "12-444 000.1111\n"
+ "12-444.0001111\n"
+ "12-444000.1111\n"
+ "12-444-000.1111\n"
+ "12-(4440001111\n"
+ "12-444)0001111\n"
+ "12-440001111\n"
+ "12-444000111111\n\n"
+ "1-888-720-1275 x2 x2\n"
+ "1-888-720-1275 2\n"
+ "1-888-720-1275 x\n"
+ "1-888-720-1275 Ext\n"
+ "888-720-1275x\n\n"
+ "1-444000-1111\n"
+ "1-444-0001111\n"
+ "1-444.000-1111\n"
+ "1-444000 1111\n"
+ "1-444 0001111\n"
+ "1-444 000.1111\n"
+ "1-444.0001111\n"
+ "1-444000.1111\n"
+ "1-444-000.1111\n"
+ "1-(4440001111\n"
+ "1-444)0001111\n"
+ "1-440001111\n"
+ "1-444000111111";
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