LINUX.ORG.RU

$ echo "+79001234567" | sed -rn 's/\+7[0-9]{10}/&/p'
+79001234567
drBatty ★★
()

> +7**********

Всегда ненавидел эту идиотскую проверку номера телефона на сайтах.

AnDoR ★★★★★
()

А если я захочу в привычном мне виде ввести «+7 924 142 0000» ?

Не люблю такие проверки. Если валидировать регекспом, то более комплексно.

ono
()

А можно разделить форум на Web-development и PHP-development? А то всё время как-то не по себе, когда вижу рядом PHP и Web _development_.

anonymous
()
Ответ на: комментарий от drBatty

а что?

Спрашивать такое с двумя звёздами стыдно. Две звезды предполагают от ТС чёрный пояс по гуглению и чтению манов.

adriano32 ★★★
()

Если точно по заданию, то \+7(\d){10}

Но я в своем проекте использую нечто вроде [+ 0-9()]{7,14}, чтобы захватить все варианты написания.

amomymous ★★★
()
Ответ на: комментарий от ono

ИМХО лучаше задавать жесткую валидацию во время ввода (если она возможна), чем потом мучаться распознаванием того, что ввел юзер

djenterprise
()
Ответ на: комментарий от anonymous

я всегда догадывлся, что ПХП никакго отношения к вебу не имеет

djenterprise
()
Ответ на: комментарий от drBatty

>кто мешает вставить

s/[- ]//g


Тогда уже preg_replace('/\D/', ", $phone);

KRoN73 ★★★★★
()
Ответ на: комментарий от djenterprise

Нет, ты и топикстартер в корне неправы. Вы, фактически, вредители. Естественно, ПОЛЬЗОВАТЕЛЬ не должен мучиться, пытаясь угадать, под какой регэксп он должен подстроить свой телефон.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

>Естественно, ПОЛЬЗОВАТЕЛЬ не должен мучиться, пытаясь угадать, под какой регэксп он должен подстроить свой телефон.

Правильно. Потому что на нормальных сайтах чётко описано в каком формате вводится номер телефона. (А хорошие сайты — жрут любой вменяемый формат)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

>Потому что на нормальных сайтах чётко описано в каком формате вводится номер телефона.

Это не нормальные. В лучшем случае херовенькие.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

>Это не нормальные. В лучшем случае херовенькие.

На «херовеньких» просто выдаётся ошибка несоответствия формата. Без его описания. А херовые — жрут что угодно, но неверно :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Мне всётаки кажется, что сайт, вызывающий желание избить его автора лопатой не может считаться нормальным.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

>сайт, вызывающий желание избить его автора лопатой

Это у тебя такие эмоции вызывает сайт, где описывается фиксированный формат ввода телефонного номера? Обратись к психологу. Серьёзно.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Я оговорился. Лопата нужна если формат не указан или указан неверно.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

опыт как бы говит мне, что дай юзеру возможность ввести не по маске - он введет любую фигню, которую ни один регескп не возьмет.

djenterprise
()
Ответ на: комментарий от legolegs

я имеел ввиду имменно ввод по маске MaskInpupt

знаешь, что это такое?

djenterprise
()
Ответ на: комментарий от djenterprise

>опыт как бы говит мне, что дай юзеру возможность ввести не по маске - он введет любую фигню, которую ни один регескп не возьмет.

почему нельзя вырезать все нецифры (как уже предложено \D), и интерпретировать телефон как целое (ЕМНИП они в php 64х битные)? если телефон меньше 10000000, то добавить к нему код города. (у меня в Питере номера 7и значные), а если номер менее 1000000000, добавить к нему 7000000000. Всё-же просто. И пусть юзер вводит что ему в голову взбредёт - всё будет правильно. ну нравится юзверю Ψ в номер вставлять - да и хрен с ним.

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.