function(p){return/^(\+|\()\d{2,3}\)?\s\d{2,3}(\s|\-)\d{3,7}\s?(\d{1,3})?\s?(\d{1,3})?$/.test(p)}
function validPhoneNumber(p){return/^(\+|\()\d{2,3}\)?\s\d{2,3}(\s|\-)\d{3,7}\s?(\d{1,3})?\s?(\d{1,3})?$/.test(p)} //With Function Name +17 Bytes
validPhoneNumber("(123) 456-7890"); //TRUE
validPhoneNumber("+49 89 1234567"); //TRUE
validPhoneNumber("+49 89 12345 0"); //TRUE
validPhoneNumber("+49 89 12345 123"); //TRUE
validPhoneNumber("+49 89 123 456 789"); //TRUE
validPhoneNumber("49 89 12345 123"); //FALSE
validPhoneNumber("+49 89 123 456 789 00"); //FALSE
validPhoneNumber("(1233) 456-7890"); //FALSE
validPhoneNumber("(123) 4567890"); //FALSE
validPhoneNumber("123 456-7890"); //FALSE
//etc.
Demo at http://jsfiddle.net/y3msq/5/
What about international phone numbers?