Далее на странице...
![](img/javascript/task/task_9.jpg)
На этой странице средствами Javascript будет решена довольно интересная задача по проверке номера телефона, состоящего из цифр, разделенных дефисом.
Будут рассмотрены несколько вариантов решения.
Написать функцию, которая получает номер телефона в виде: 123-4567.
Функция принимает или отвергает полученную комбинацию, которая должна состоять из семи цифр от 0 до 9, разделенных после третьей цифры дефисом.
В комбинации могут быть любые цифры от 0 до 9. Они могут повторяться, и их порядок не важен.
1-ый вариант решения - Циклы и условия
Что нужно знать?
1. Естественно тему функций (в частности оператор return - возврат значений функцией)
3. Что такое «не число» - NaN в JavaScript. Функция isNaN
4. Метод charAt - Возвращаем символ строки
5. Циклы в JavaScript - Цикл for
6. Метод prompt объекта Window
<script type="text/javascript">
function input(phone){
/* Проверка на число символов */
if (phone.length !== 8){
return false;
}
else{
/* Проверка на дефис */
if (phone.charAt(3) != "-"){
return false;
}
/* Проверки на НЕ ЧИСЛО */
else{
/* Цикл для 1-ой проверки */
for(i = 0; i < 3; i++){
if (isNaN(phone.charAt(i))){
return false;
}
}
/* Цикл для 1-ой проверки */
for(i = 4; i < 8; i++){
if (isNaN(phone.charAt(i))){
return false;
}
}
}
}
return phone;
}
var phone_N = prompt("Введите номер из 7-ми цифр формата 111-1111");
var result = input(phone_N);
document.write(result);
</script>
1-ый вариант решения - Результат
2-ой вариант решения - Извлекаем часть строки
Что нужно знать?
Помимо знаний, используемых в 1-м варианте решения задачи, здесь мы будем иметь дело:
1) Метод substring в JavaScript - Как извлечь часть строки?
<script type="text/javascript">
function input(phone){
var three = phone.substring(0,3); /* Извлекаем 1-е три символа строки */
var four = phone.substring(4); /* Извлекаем всю строку, начиная с 4-го символа */
/*
1. Проверка на число символов
2. Проверка на дефис
3. Две проверки на НЕ число 2-х групп символов: isNaN(three) и isNaN(four)
*/
if(phone.length != 8 || phone.charAt(3) != "-" ||isNaN(three) || isNaN(four)){
return false;
}
else{
return phone;
}
}
var phone_N = prompt("Введите номер из 7-ми цифр формата 111-1111");
var result = input(phone_N);
document.write(result);
</script>
2-ой вариант решения - Результат
3-ий вариант решения
Что нужно знать?
Третий вариант решения задачи по проверке номера телефона вида 123-4567 не требует иных знаний, кроме перечисленных в 1-х двух вариантах решения.
<script type="text/javascript">
function input(phone){
/* 1. Проверка на число символов */
if (phone.length != 8){
return false;
}
for(i = 0; i < phone.length; i++){
/* 2. Проверка на дефис для 4-го символа */
if (i == 3){
if(phone.charAt(i) != "-"){
return false;
}
}
/* 3. Проверка на НЕ число всех остальных символов */
else if(isNaN(phone.charAt(i))){
return false;
}
}
return phone;
}
var phone_N = prompt("Введите номер из 7-ми цифр формата 111-1111");
var result = input(phone_N);
document.write(result);
</script>
3-ий вариант решения - Результат
На следующей странице задача по проверке номера телефона будет усложнена. Изучайте Javascript.
Читайте также...
Отзывы и комментарии:
Добавил:
Admin
Дата:
2023-04-24
Проверка о которой вы пишите: else if(isNaN(phone.charAt(i))){ return false; } - это проверка на НЕ число всех остальных символов. 4-ый элемент "-" проверяется на не число здесь: if (i == 3){ if(phone.charAt(i) != "-"){ return false; } }
Дата: 2023-03-28
Здравсвуйте, подскажите пожалуйста в 3 варианте почему проверка else if(isNaN(phone.charAt(i))){ return false; } на 4 итерации не не производит выход из функции. Проверяется 4 элемент на не число, условие по идеи ведь выполняется "-" не является числом и мы должны выполнить условие if, а итерации продалжаються. Почему?