JS Как проверить номер мобильного телефона - PullRequest
0 голосов
/ 22 декабря 2018

Я новичок в кодировании и получил этот вопрос;

Создайте функцию, которая будет получать строку мобильного номера.Должно возвращаться значение true, если номер является действительным номером в Великобритании, и значение false, если нет.

Действительный номер мобильного телефона может начинаться с «07», за которым следуют еще 9 цифр.Оно также может начинаться с «+447», за которым следуют еще 9 цифр.Он также может начинаться с «00447», за которым следуют еще 9 цифр.Все остальное недопустимо.

Это код, который я создал;

function validMobileNumber(num) {
    if (num.length != 9) 
    {
        return false
    }
    if (num.length = 9 && num.includes(07, 0) && num.includes(+447, 0) && num.includes(00447, 0)) {
        return true
    }
}

Мой код будет запущен против этого;

describe("validMobileNumber", () => {
    it("returns false when passed a string of the wrong length", () => {
        expect(validMobileNumber("123")).to.equal(false);
        expect(validMobileNumber("0750617250638")).to.equal(false);
        expect(validMobileNumber("+447712368768724988")).to.equal(false);
    });
    it("returns true when passed a valid plain phone num string", () => {
        expect(validMobileNumber("07506172506")).to.equal(true);
    });
    it("returns true when passed a valid string with a + prefix", () => {
        expect(validMobileNumber("+447506172506")).to.equal(true);
    });
    it("returns true when passed a valid international phone num", () => {
        expect(validMobileNumber("00447506172506")).to.equal(true);
    });
    it("returns false when passed a string with invalid chars", () => {
        expect(validMobileNumber("07506189foo")).to.equal(false);
    });
    it("returns true when passed random other valid phone numbers", () => {
        expect(validMobileNumber("00447555123456")).to.equal(true);
        expect(validMobileNumber("+447676111222")).to.equal(true);
        expect(validMobileNumber("07898888643")).to.equal(true);
        expect(validMobileNumber("07766555432")).to.equal(true);
        expect(validMobileNumber("07989765490")).to.equal(true);
    });
    it("returns false when passed random other invalid phone numbers", () => {
        expect(validMobileNumber("004475551&&&23456")).to.equal(false);
        expect(validMobileNumber("-447676111222")).to.equal(false);
        expect(validMobileNumber("09898888643")).to.equal(false);
        expect(validMobileNumber("+449166555432")).to.equal(false);
        expect(validMobileNumber("00448989765493")).to.equal(false);
        expect(validMobileNumber("cats")).to.equal(false);
    });
}); 

У кого-нибудь есть предложения, как заставить мой код работать правильно?

1 Ответ

0 голосов
/ 22 декабря 2018

Вы можете использовать регулярные выражения иначе.регулярное выражение.{ Regex Tutorial }

Мне было скучно, поэтому я написал это для вас.

validMobileNumber("123"); //.to.equal(false);
validMobileNumber("0750617250638"); //.to.equal(false);
validMobileNumber("+447712368768724988"); //.to.equal(false);

validMobileNumber("07506172506"); //.to.equal(true);

validMobileNumber("+447506172506"); //.to.equal(true);

validMobileNumber("00447506172506"); //.to.equal(true);

validMobileNumber("07506189foo"); //.to.equal(false);
validMobileNumber("00447555123456"); //.to.equal(true);
validMobileNumber("+447676111222"); //.to.equal(true);
validMobileNumber("07898888643"); //.to.equal(true);
validMobileNumber("07766555432"); //.to.equal(true);
validMobileNumber("07989765490"); //.to.equal(true);

validMobileNumber("004475551&&&23456"); //.to.equal(false);
validMobileNumber("-447676111222"); //.to.equal(false);
validMobileNumber("09898888643"); //.to.equal(false);
validMobileNumber("+449166555432"); //.to.equal(false);
validMobileNumber("cats"); //.to.equal(false);


function validMobileNumber(number) {
  let regex = /((07)|((\+|00)447)){1}[0-9]{9}\b/,
  result = regex.test(number);
  console.log(number, result);
  return result;
}
...