Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение для проверки мобильного (https://javascript.ru/forum/misc/68019-regulyarnoe-vyrazhenie-dlya-proverki-mobilnogo.html)

рони 21.03.2017 13:26

Цитата:

Сообщение от laimas
а то, что хотел отослать, не так и большое, ни в какую.

попробуй отправлять крупное сообщение через кнопку Расширенный режим там будет проверка через капча, но всё отправит

laimas 21.03.2017 13:27

Цитата:

Сообщение от DVMade
Как правильно?

Что? Сам шаблон указан верно, i лишнее, а задание границ (^$) есть условие проверять всю строку, то есть ошибка будет если меньше 11, больше 11, ну и естественно если не цифры, и в начале не 79.

Кстати, принуждать пользователя вводить номер строго так как вам нравится, не лучшее решение.

рони 21.03.2017 13:27

Цитата:

Сообщение от DVMade
Как правильно?

правильно сделать макет минимальный или ответить что вы проверяите, что такое phone

laimas 21.03.2017 13:38

Цитата:

Сообщение от рони
Попробуй отправлять крупное сообщение через кнопку Расширенный режим

Да вроде ожил уже. )

DVMade 21.03.2017 14:39

Мне важен строгий формат 79nnnnnnnnn
В дальнейшем на это поле будет работать скрипт, с СМС верификацией.

ksa 21.03.2017 14:43

Цитата:

Сообщение от DVMade (Сообщение 448001)
Смотрите, у меня сейчас так:
if (phone.match(/^79\d{9}$/i)){
				$("#phone").css('border', '0px');            	
            	$('#errorBlock').css('display', 'none'); 
            	$('input:submit').removeAttr("disabled");
			}else{
                $("#phone").css('border', 'red 1px solid');
                $('#errorBlock').css('display', 'block'); 
                $('#errorBlock').html('Номер мобильного телефона введен не верно!');
                $('input:submit').attr("disabled", true);
			}


Но работает не корректно, скрипт выдает ошибку, только если меньше 10 символов введено... по маске он не работает

Тогда уже так...

var str='79123456789';
if (/^79\d{9}$/.test(str)) {
	alert('Ok');
} else {
	alert('Error');
};

laimas 21.03.2017 14:57

Цитата:

Сообщение от DVMade
Мне важен строгий формат 79nnnnnnnnn

А зачем он лично вам? Понятное дело, что в базе данных нужно держать в удобном формате, только числа, ведь нужно не только проверять корректность ввода, но и есть ли такой уже в базе. То есть нужно не вам, а СУБД.

А вот для пользователя телефон давно уже сначала стиль жизни и только затем устройство для связи. А в жизни человек всегда приобретает навыки, привычки. Кто-то лучше воспринимает номер как 7 999 999 99 99, а кому-то удобнее 7 999 999-99-99. Так ли важна +7 или же можно и 8?

Вы пытаетесь сделать невозможное - отучить человека от его привычек. А стоит ли это делать? Ведь если проверка сценарием, что же мешает перед проверкой по шаблону удалить все не цифровые символы разрешенные наряду с цифрами для ввода? Это ведь не сложно, и записать в базу только цифры также не сложно будет.

Либо добавляйте удобства для пользователя - 79 автоматом подставляется в шаблон и вводить не требуется, и все остальное по шаблону, автоматически вырезая не цифры.

DVMade 21.03.2017 15:31

все равно не работает, позволяет ввести больше цифр и не в этом формате... или я что-то не понимаю...

ksa 21.03.2017 15:33

Цитата:

Сообщение от DVMade
все равно не работает, позволяет ввести больше цифр и не в этом формате...

Покажи на моем примере (см.выше) какой вариант со значением переменной str у тебя "проходит"...

DVMade 21.03.2017 17:56

1234567890


Часовой пояс GMT +3, время: 18:16.