Yutex - Платный хостинг PHP.
Advego.ru - система покупки и продажи контента для сайтов, форумов и блогов

Технические фишки инфобизнеса 2014

Статьи для сайтов!!!
Дизайн сайтов
Проверка номера 123-4567 123-4567 или 1234567 - Продолжение Проверка номера - Регулярные выражения

Проверка номера телефона: 123-4567 или 1234567 - Продолжение практической задачи по javascript

Количество просмотров: 208

На этой странице будет продолжена работа с предыдущей практической задачей, где, напомним, средствами javascript проводилась проверка номера телефона, состоящего из семи цифр, разделенных дефисом.

Здесь задача будет усложнена, причем ДВАЖДЫ измениться ее условие.

Исходное условие: Написать функцию, которая получает номер телефона в виде: 123-4567.

Функция принимает или отвергает полученную комбинацию, которая должна состоять из семи цифр от 0 до 9, разделенных после третьей цифры дефисом.

Далее следуют 2 модификации исходного условия...

1-ый вариант модификации условия задачи и ее Решение 1 и Решение 2

 

Написать функцию, которая получает номер телефона в виде: 123-4567 или 1234567.

То есть комбинация должна состоять из семи цифр от 0 до 9, и она МОЖЕТ разделяться после третьей цифры дефисом (нужно учесть оба варианта).

2-ой вариант модификации условия

 

Функция получает комбинацию, состоящую из семи цифр от 0 до 9, которая МОЖЕТ В ЛЮБОМ МЕСТЕ разделяться дефисом.

Возможные варианты: 1234567, 1-234567, 12-34567 и т.д.

Для всех условий: в комбинации могут участвовать любые цифры от 0 до 9. Цифры могут повторяться, и их порядок не важен.

Решение №1 - для 1-го варианта модификации условия

Решение №1 дополняет 3-ий вариант решения исходной задачи.

<script type="text/javascript">

function input(phone){

/* 1. Проверка на число символов: 7 или 8 */
if(phone.length < 7 || phone.length > 8){
return false;
}

for(i = 0; i < phone.length; i++){
/* 2. Если 4-ый символ Дефис, то всего символов должно быть 8. */
if(i === 3){
if(phone.length === 8 && phone.charAt(i) !== "-"){
return false;
}
/* 3. Если же число символов 7, то проверяем 4-ый символ на НЕ число */
else if(phone.length === 7 && isNaN(phone.charAt(i))){
return false;
}
}
/* 4. Проверка на НЕ число всех остальных символов */
else if(isNaN(phone.charAt(i))){
return false;
}
}
return phone;
}

var phone_N = prompt("Введите 7-ми значный номер из цифр от 0 до 9. При этом дефис может быть на 4-ой позиции");

var result = input(phone_N);

document.write(result);

</script>

Решение 1 - Дефис может быть на 4-ой позиции - Результат...

Решение №2 - для 1-го варианта модификации условия

Это решение дополняет 2-ой вариант решения исходной задачи.

<script type="text/javascript">

function input(phone){

/* 1. Проверка на число символов */
if (phone.length > 8 || phone.length < 7) {
return false;
}

/* Извлекаем за 2 шага все символы если их 7 и все кроме Дефиса, если их 8 */
var first = phone.substring(0,3);
var second = phone.substring(phone.length - 4);

/* Проверки на НЕ число 2-х групп символов */
if (isNaN(first) || isNaN(second)) {
return false;
}

if (phone.length === 8 && phone.charAt(3) === "-") {
return phone;
}
else if (phone.length === 7){
return phone;
}
else{
return false;
}
return phone;
}

var phone_N = prompt("Введите 7-ми значный номер из цифр от 0 до 9. При этом дефис может быть на 4-ой позиции");

var result = input(phone_N);

document.write(result);

</script>

Решение 2 - Дефис может быть на 4-ой позиции - Результат...

Дефис может быть на любой позиции - 2-ой вариант модификации условия

<script type="text/javascript">

function input(phone){

/* Проверка на число символов 7 или 8 */
if(phone.length != 7 && phone.length != 8){
return false;
}

/* Если число символов 7 - Проверка каждого на НЕ число */
if(phone.length == 7){
for(i = 0; i < phone.length; i++){
if(isNaN(phone.charAt(i))){
return false;
}
}
}

/* Возвращаем ложь, если введены 8 цифр, так как по условию их должно быть 7 или 7 и Дефис */
if(phone.length == 8 && isNaN(phone) == false){
return false;
}

if(phone.length == 8){
for(i = 0; i < phone.length; i++){
if(isNaN(phone.charAt(i)) && phone.charAt(i) !== "-"){
return false;/* Возвращаем ложь, если введены 7 цифр и вместо дефиса - другой символ */
}

/* Если среди символов есть Дефис... */
else if(phone.charAt(i) == "-"){
var first_group = phone.substring(0,i); /* Извлекаем группу символов до дефиса */
var second_group = phone.substring(i+1); /* Извлекаем группу символов после дефиса */
/*Далее проверка обеих групп символов на НЕ число */
if(isNaN(first_group) || isNaN(second_group)){
return false;
}

}
}
}
return phone;
}

var phone_N = prompt("Введите 7-ми значный номер из цифр от 0 до 9. Пробуйте в произвольном месте разделить их дефисом");

var result = input(phone_N);

document.write(result);

</script>

Дефис может быть на любой позиции - Результат...

Эта задача может быть решена гораздо проще, если воспользоваться регулярными выражениями. Об этом на следующей странице...

Тогда здесь может возникнуть вопрос: почему мы все это делали, создавали столь громоздкие решения?

Ответ прост: это было неплохая тренировка для практической работы с javascript-кодом.

Частота просмотра уроков
JavaScript
Проверка номера 123-4567 123-4567 или 1234567 - Продолжение Проверка номера - Регулярные выражения

Ваши комментарии:

Комментариев нет...

Добавить комментарий:

Ваше Имя:*
Комментарий:*
Ответьте на вопрос: *
Сколько дней в Високосном году?
* - поля обязательные для заполнения.
ПОИСК ПО САЙТУ:

Моё имя Антон. Связаться со мною Вы можете по e-mail: averagev@mail.ru