Вот то, что я использовал в Oracle SQL, чтобы проверить, передает ли кто-то правильно отформатированный номер телефона:
WHERE REPLACE(TRANSLATE('555-555-1212','0123456789-','00000000000'),'0','') IS NULL AND
LENGTH(REPLACE(TRANSLATE('555-555-1212','0123456789','0000000000'),'0','')) = 2
Первая часть проверяет, есть ли в номере телефона только цифры, а дефис, а вторая часть проверяет, что номер телефона имеет только два дефиса.