Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка номера телефона (https://javascript.ru/forum/misc/33389-proverka-nomera-telefona.html)

VetalMan23 21.11.2012 15:27

Проверка номера телефона
 
Стоит задача проверить форму на правильность записи формата:
8-(XXXX)-XXXXXX 8-(XXX)-XXX-XX-XX
Всё в 1 строку, учитывая пробел.
У меня возникла проблема проверки повторяющихся наборов символов: ")-". Ещё программа не может проверить "-", выдавая ошибку.

Мои попытки:

function proverka0()
{
Telefon=document.form1.TLF.value;
a=Telefon.indexOf('8-(');
b=Telefon.indexOf(')-');
c=Telefon.indexOf(' 8-(');
/*d=Telefon.indexOf('-');
e=Telefon.indexOf('-');
f=Telefon.indexOf('-');
g=Telefon.indexOf('');*/

if (a==0 && b==7 && c==15)// && d==27)// && d==b2+5) //&& c>=b+14 && d>=c+18 && e>=d+22 && f>=e+25 && g>=27)
{
alert("Телефон введён правильно");
form1.submit();
}
else
{
alert("Телефон введён неправильно");
}
}


Как правильно нужно делать проверку повторяющихся символов и "-"?

Margarita 21.11.2012 16:36

мне кажется, что если у вас должен быть один -, то можно найти значение первого - и проверить что следующий символ после него является числом или скобкой
где-то так:
if(Telefon.charAt(Telefon.indexOf("-")+1) == "(" || !isNAN(Telefon.charAt(Telefon.indexOf("-")+1)) {
alert("Ok");
}

Aetae 21.11.2012 16:57

Убивать. Насиловать сучковатой толстой веткой до самой смерти за такое.
Проблемы форматирования телефона - это твои проблемы, а не проблемы человека пришедшего на твой сайт. Человек должен вводить номер телефона так, как ему это нравится, а если ты не удосужился выучить регулярки - это проблема твоей некомпетентности.

VetalMan23 22.11.2012 10:54

Цитата:

Сообщение от Margarita (Сообщение 217119)
мне кажется, что если у вас должен быть один -, то можно найти значение первого - и проверить что следующий символ после него является числом или скобкой
где-то так:
if(Telefon.charAt(Telefon.indexOf("-")+1) == "(" || !isNAN(Telefon.charAt(Telefon.indexOf("-")+1)) {
alert("Ok");
}

Если речь идёт об одном из 2-х последних "-", то как проверить на наличие второе "-"?

VetalMan23 22.11.2012 10:56

Цитата:

Сообщение от Aetae (Сообщение 217126)
Убивать. Насиловать сучковатой толстой веткой до самой смерти за такое.
Проблемы форматирования телефона - это твои проблемы, а не проблемы человека пришедшего на твой сайт. Человек должен вводить номер телефона так, как ему это нравится, а если ты не удосужился выучить регулярки - это проблема твоей некомпетентности.

Это задание на лабораторную работу. Теперь вежливо извинись и вали отсюда.

Margarita 22.11.2012 12:03

Цитата:

Сообщение от VetalMan23 (Сообщение 217231)
Если речь идёт об одном из 2-х последних "-", то как проверить на наличие второе "-"?

если вы имеет в виду два - подряд, то для первого будет проверка на следующий "-", а для второго уже написанная выше проверка

Aetae 22.11.2012 15:07

Цитата:

Сообщение от VetalMan23 (Сообщение 217232)
Это задание на лабораторную работу. Теперь вежливо извинись и вали отсюда.

Извиниться? Перед не способным самостоятельно выполнить то, чему, очевидно, он должен был научиться? Не смеши меня.

Sanda 22.11.2012 15:31

Правильно использовать регулярные выражения.
phone = '8-(1234)-567890 8-(123)-456-78-90';
alert(
	'Номер введён ' + 
	(phone.replace(/8\-\(\d{3}\)\-\d{6} 8\-\(\d{3}\)\-\d{3}\-\d{2}\-\d{2}/, '').length ? 'не' : '') + 
	'правильно'
);

Антон Крамолов 22.11.2012 15:50

/^8\-(?:\(\d{4}\)\-\d{6}|\(\d{3}\)\-\d{3}\-\d{2}\-\d{2})$/.test('8-(0000)-000000')

VetalMan23 22.11.2012 16:38

Цитата:

Сообщение от Sanda (Сообщение 217268)
Правильно использовать регулярные выражения.
phone = '8-(1234)-567890 8-(123)-456-78-90';
alert(
	'Номер введён ' + 
	(phone.replace(/8\-\(\d{3}\)\-\d{6} 8\-\(\d{3}\)\-\d{3}\-\d{2}\-\d{2}/, '').length ? 'не' : '') + 
	'правильно'
);

Как ни странно, этот вариант не работает. Ввожу 8-(1234)-567890 8-(123)-456-78-90, но всё-равно выводит "Не правильно".


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