Регулярное выражение для проверки номера телефона в международном формате?
Помогите составить регулярное выражение для определения номера телефона в международном формате.
Искал много где, но, к сожалению, в большинстве случаев, привязка к стране с ее особенностями, или нескольких стран, а мне нужен именно международный формат, учитывающий все различные варианты.
Для себя вижу следующий формат:
"+" -обязательный символ
" " "(" (пробел, открывающая скобка - возможно, но не обязательно, возможно использование нескольких символов подряд, например, пробел_открывающая_скобка_пробел)
код_страны - 1-3 цифры, (обязательно)
" " ")" "." "(" "-" (пробел, закрывающая скобка, точка, открывающая скобка, тире или дефис - возможно, но не обязательно, возможно использование нескольких символов подряд)
код_города_или_оператора 1-6 цифр (обязательное)
" " ")" "." "-" (пробел, закрывающая скобка, точка, тире или дефис - возможно, но не обязательно, возможно использование нескольких символов подряд)
номер телефона (4-12 цифр, разделенных различным мусором " " "." "-" в произвольном порядке, мусор может быть скомбинирован произвольно в группу символов, например " - ")
Суммарное количество цифр в номере 9-20
Тут как с email-ами. Самое правильное - проверять регуляркой /@/
Тут просто валидируешь в три действия:
1) Проверяешь, чтобы первый знак был плюсом
2) Удаляешь ОДИН плюс и все пробелы и дефисы (минусы)
3) Проверяешь, получилось ли целое число
С мылами так не выйдет, кроме собаки, там есть обязательно наличие домена после собаки (имя+точка+имя_до_7_знаков), ну и само мыло надо проверять на корректность и отсутствие крокозябл
Из-за внутренних ограничений системы я не могу использовать замену, поэтому только проверка.
Мне надо проверять на корректность любой международный телефон. В каждой стране свой формат + куча возможностей по написанию и все правильные, я уже голову сломал.