## The challenge

Write a function that accepts a string, and returns true if it is in the form of a phone number.
Assume that any integer from 0-9 in any of the spots will produce a valid phone number.

Only worry about the following format:
(123) 456-7890 (don’t forget the space after the close parentheses)

Examples:

 ``````1 2 3 `````` ``````"(123) 456-7890" => true "(1111)555 2345" => false "(098) 123 4567" => false ``````

## The solution in Java code

Option 1:

 ``````1 2 3 4 5 `````` ``````public class Solution { public static boolean validPhoneNumber(String phoneNumber) { return phoneNumber.matches("\\(\\d{3}\\) \\d{3}-\\d{4}"); } } ``````

Option 2:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 `````` ``````public class Solution { public static boolean validPhoneNumber(String phoneNumber) { char[] cStr = phoneNumber.toCharArray(); if(cStr[0] != '(') return false; if(cStr[4] != ')') return false; if(cStr[5] != ' ') return false; if(cStr[9] != '-') return false; for(int i = 1; i < cStr.length; i++){ if(i != 4 && i != 5 && i != 9){ if(!Character.isDigit(cStr[i])) return false; } } return true; } } ``````

Option 3:

 ``````1 2 3 4 5 `````` ``````public class Solution { public static boolean validPhoneNumber(String phoneNumber) { return phoneNumber.equalsIgnoreCase("(123) 456-7890"); } } ``````

## Test cases to validate our solution

 `````` 1 2 3 4 5 6 7 8 9 10 11 `````` ``````import org.junit.Test; import static org.junit.Assert.assertEquals; public class PhoneExampleTests { @Test public void tests() { assertEquals(true, Solution.validPhoneNumber("(123) 456-7890")); assertEquals(false, Solution.validPhoneNumber("(1111)555 2345")); assertEquals(false, Solution.validPhoneNumber("(098) 123 4567")); } } ``````

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 `````` ``````import org.junit.Test; import static org.junit.Assert.assertEquals; public class PhoneTests { @Test public void basicTests() { String msg = "Follow the formatting instructions carefully"; assertEquals(msg, true, Solution.validPhoneNumber("(123) 456-7890")); assertEquals(msg, false, Solution.validPhoneNumber("(1111)555 2345")); assertEquals(msg, false, Solution.validPhoneNumber("(098) 123 4567")); assertEquals(msg, false, Solution.validPhoneNumber("(123)456-7890")); } @Test public void formCharTests() { String msg = "Pay attention to the formatting of the string and surrounding characters"; assertEquals(msg, false, Solution.validPhoneNumber("abc(123)456-7890")); assertEquals(msg, false, Solution.validPhoneNumber("(123)456-7890abc")); assertEquals(msg, false, Solution.validPhoneNumber("abc(123)456-7890abc")); } @Test public void charTests() { String msg = "Be careful with characters surrounding the phone number"; assertEquals(msg, false, Solution.validPhoneNumber("abc(123) 456-7890")); assertEquals(msg, false, Solution.validPhoneNumber("(123) 456-7890abc")); assertEquals(msg, false, Solution.validPhoneNumber("abc(123) 456-7890abc")); } @Test public void badCharTests() { String msg = "Be careful with non-digit characters inside phone number"; assertEquals(msg, false, Solution.validPhoneNumber("(123) 456-78f0")); assertEquals(msg, false, Solution.validPhoneNumber("(123) 4e6-7890")); assertEquals(msg, false, Solution.validPhoneNumber("(*23) 456-7890")); } } ``````