Далее на странице...
На этой странице средствами 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, а итерации продалжаються. Почему?