简体   繁体   English

JS 如何验证手机号码

[英]JS How to validate a mobile phone number

I am new to coding an have been given this question;我是编码新手,已经被问到这个问题;

Create a function that will receive the string of a mobile number.创建一个接收手机号码字符串的函数。 It should return true if the number is a valid UK number and false if not.如果号码是有效的英国号码,则返回 true,否则返回 false。

A valid mobile number may begin with '07' followed by 9 more digits.有效的手机号码可能以“07”开头,后跟 9 位数字。 It may also begin with '+447' followed by 9 more digits.它也可以以“+447”开头,后跟另外 9 位数字。 It may also begin with '00447' followed by 9 more digits.它也可能以“00447”开头,后跟 9 位数字。 Anything else is invalid.其他的都是无效的。

This is the code that I have created;这是我创建的代码;

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
    }
}

My code will be run against this;我的代码将针对此运行;

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);
    });
}); 

Dose anyone have any suggestion to how ta make my code run properly?有人对如何使我的代码正常运行有任何建议吗?

You can use Regular Expressions aka.您也可以使用正则表达式。 regex.正则表达式。 { Regex Tutorial } { 正则表达式教程}

I was bored so I wrote it for you.我很无聊所以我写给你。

 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; }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM