Выбрать № тел. США
21-ый день программы "#100 Days Of Code"
Несмотря на кажущуюся простоту задания, оно забрало у меня достаточно много времени. Время было потрачено с пользой на углубленное изучение дополнительного материала по регулярным выражениям!
Учитывая то, что нам предложено в задании сделать возврат именно в булевом выражении, то я остановился на методе test()
Решил воспользоваться подсказкой, которую дали в задании. Для этого приведу его полностью:
Return true if the passed string is a valid US phone number.
The user may fill out the form field any way they choose as long as it is a valid US number. The following are examples of valid formats for US numbers (refer to the tests below for other variants):
555-555-5555
(555)555-5555
(555) 555-5555
555 555 5555
5555555555
1 555 555 5555
For this challenge you will be presented with a string such as 800-692-7753 or 8oo-six427676;laskdjf. Your job is to validate or reject the US phone number based on any combination of the formats provided above. The area code is required. If the country code is provided, you must confirm that the country code is 1. Return true if the string is a valid US phone number; otherwise return false.
В общем, я решил пойти путем простым и просто выбрать номера, которые будут являться допустимыми стандартами США
Так как, метод test() вернет значение true если номера заданы по стандарту, то мне осталось просто прописать это в условие. Для наглядности, я вынес его в отдельную переменную.
^ - начало, $- конец строки(якоря) И далее - первая единица или пробел , ? - ленивый поиск В скобочную группу выбрал первые три цифры в скобках или без, Далее пробел или "-" в наборе (диапазоне), затем три цифры и опять или пробел или дефис и четыре цифры. Ну и везде - ленивый поиск.
В этом задании задействованы почти все классы, символы и прочее, что можно было почерпнуть в учебнике.
Думаю, что для более подробного изучения, мне стоит к этому еще не раз вернуться. Пока что, я постарался выбрать и объяснить решение именно так.
function telephoneCheck(str) { var re = /^1? ?(\(\d{3}\)|\d{3})[ -]?\d{3}[ -]?\d{4}$/; return re.test(str); } telephoneCheck("555)-555-5555");
Ответы:
telephoneCheck("555-555-5555")
return a boolean.
telephoneCheck("1 555-555-5555")
return true.
telephoneCheck("1 (555) 555-5555")
return true.
telephoneCheck("5555555555")
return true.
telephoneCheck("555-555-5555")
return true.
telephoneCheck("(555)555-5555")
return true.
telephoneCheck("1(555)555-5555")
return true.
telephoneCheck("555-5555")
return false.
telephoneCheck("5555555")
return false.
telephoneCheck("1 555)555-5555")
return false.
telephoneCheck("1 555 555 5555")
return true.
telephoneCheck("1 456 789 4444")
return true.
telephoneCheck("123**&!!asdf#")
return false.
telephoneCheck("55555555")
return false.
telephoneCheck("(6505552368)")
return false
telephoneCheck("2 (757) 622-7382")
return false.
telephoneCheck("0 (757) 622-7382")
return false.
telephoneCheck("-1 (757) 622-7382")
return false
telephoneCheck("2 757 622-7382")
return false.
telephoneCheck("10 (757) 622-7382")
return false.
telephoneCheck("27576227382")
return false.
telephoneCheck("(275)76227382")
return false.
telephoneCheck("2(757)6227382")
return false.
telephoneCheck("2(757)622-7382")
return false.
telephoneCheck("555)-555-5555")
return false.
telephoneCheck("(555-555-5555")
return false.
telephoneCheck("(555)5(55?)-5555")
return false.
Комментариев нет:
Отправить комментарий