Если вы просто хотите проверить, что у вас нет случайного мусора в поле (т. е. от спаммеров формы), это регулярное выражение должно делать красиво:
^[0-9+\(\)#\.\s\/ext-]+$
Обратите внимание, что он не имеет специальные правила для того, сколько цифр или какие числа действительны в этих цифрах, оно просто проверяет, что только цифры, скобки, тире, плюс, пробел, фунт, звездочка, период, запятая или буквы e
, x
, t
.
Он должен быть совместим с международными номерами и форматами локализации. Предусматриваете ли вы необходимость разрешать квадратные, кудрявые или угловые скобки для некоторых регионов? (в настоящее время они не включены).
Если вы хотите поддерживать правила на каждую цифру (например, в кодах и префиксах в США (коды обмена) должны находиться в диапазоне 200-999), хорошо, хорошо удачи вам. Сохранение сложного набора правил, который может быть устаревшим в любой момент в будущем в любой стране мира, не выглядит забавным.
И хотя удаление всех / большинства нечисловых символов может хорошо работать на сервере (особенно если вы планируете передавать эти значения в дозвонщик), вы можете не захотеть вогнать вход пользователя во время проверки, особенно если вы хотите, чтобы они вносили поправки в другое поле.