Как написать функцию, которая принимает телефонный номер в виде строки и проверяет, является ли это телефонный номер в США или нет? - PullRequest
0 голосов
/ 02 мая 2019

Функция должна возвращать true, если переданная строка является действительным номером телефона США.

Ответы [ 2 ]

2 голосов
/ 02 мая 2019

Зависит от того, насколько «достоверным» вы хотите его видеть.если все, что вы имеете в виду, это то, что он содержит ровно 10 цифр или 11 цифр с кодом страны ... тогда это, вероятно, довольно просто.

function telephoneCheck(str) {
  var isValid = false;
  //only allow numbers, dashes, dots parentheses, and spaces
  if (/^[\d-()\s.]+$/ig.test(str)) {
    //replace all non-numbers with an empty string
    var justNumbers = str.replace(/\D/g, '');
    var count = justNumbers.length;
    if(count === 10 || (count === 11 && justNumbers[0] === "1") ){
      isValid = true;
    }
  }
  console.log(isValid, str);
  return isValid;
}

telephoneCheck("555-555-5555");   //true
telephoneCheck("1-555-555-5555"); //true
telephoneCheck("(555)5555555");   //true
telephoneCheck("(555) 555-5555"); //true
telephoneCheck("555 555 5555");   //true
telephoneCheck("5555555555");     //true
telephoneCheck("1 555 555 5555")  //true
telephoneCheck("2 555 555 5555")  //false (wrong country code)
telephoneCheck("800-692-7753");   //true
telephoneCheck("800.692.7753");   //true
telephoneCheck("692-7753");       //false (no area code)
telephoneCheck("");               //false (empty)
telephoneCheck("4");              //false (not enough digits)
telephoneCheck("8oo-six427676;laskdjf"); //false (just crazy)
.as-console-wrapper{max-height:100% !important;}
0 голосов
/ 02 мая 2019

Google оказал огромную услугу всему человечеству и опубликовал библиотеку проверки и форматирования телефонных номеров: https://github.com/googlei18n/libphonenumber

В вашем случае вы можете использовать библиотеку Javascript, доступную в NPM, по адресу https://www.npmjs.com/package/google-libphonenumber

npm install --save-prod google-libphonenumber

Тогда

// Get an instance of `PhoneNumberUtil`. 
const phoneUtil = require('google-libphonenumber').PhoneNumberUtil.getInstance();

// Result from isValidNumber().
console.log(phoneUtil.isValidNumber(number));

// Result from isValidNumberForRegion().
console.log(phoneUtil.isValidNumberForRegion(number, 'US'));
...