FreeCodeCamp筆記之:Validate US Telephone Numbers

題目

Validate US Telephone Numbers
如果傳入字符串是一個有效的美國電話號碼,則返回true.
用戶可以在表單中填入一個任意有效美國電話號碼. 下面是一些有效號碼的例子(還有下面測試時用到的一些變體寫法):
555-555-5555
(555)555-5555
(555) 555-5555
555555 5555
5555555555
1 555 555 5555
在本節中你會看見如
800-692-7753
or8oo-six427676;
laskdjf
這樣的字符串. 你的任務就是驗證前面給出的字符串是否是有效的美國電話號碼. 區號是必須有的. 如果字符串中給出了國家代碼, 你必須驗證其是1. 如果號碼有效就返回true; 否則返回false.
當你遇到困難的時候,記得查看錯誤提示、閱讀文檔、搜索、提問。
這是一些對你有幫助的資源: RegExp

telephoneCheck("555-555-5555") 應該返回一個布爾值.
telephoneCheck("1 555-555-5555") 應該返回 true.
telephoneCheck("1 (555) 555-5555") 應該返回 true.
telephoneCheck("5555555555") 應該返回 true.
telephoneCheck("555-555-5555") 應該返回 true.
telephoneCheck("(555)555-5555") 應該返回 true.
telephoneCheck("1(555)555-5555") 應該返回 true.
telephoneCheck("1 555)555-5555") 應該返回 false.
telephoneCheck("1 555 555 5555") 應該返回 true.
telephoneCheck("1 456 789 4444") 應該返回 true.
telephoneCheck("123**&!!asdf#") 應該返回 false.
telephoneCheck("55555555") 應該返回 false.
telephoneCheck("(6505552368)") 應該返回 false
telephoneCheck("2 (757) 622-7382") 應該返回 false.
telephoneCheck("0 (757) 622-7382") 應該返回 false.
telephoneCheck("-1 (757) 622-7382") 應該返回 false
telephoneCheck("2 757 622-7382") 應該返回 false.
telephoneCheck("10 (757) 622-7382") 應該返回 false.
telephoneCheck("27576227382") 應該返回 false.
telephoneCheck("(275)76227382") 應該返回 false.
telephoneCheck("2(757)6227382") 應該返回 false.
telephoneCheck("2(757)622-7382") 應該返回 false.
telephoneCheck("555)-555-5555") 應該返回 false.
telephoneCheck("(555-555-5555") 應該返回 false.

思路

  1. 初看題目嚇死寶寶了,這么多種情況;
  2. 應該是用正則表達式一種一種的配唄,要細心,慢慢來;
  3. 號碼分析,正確號碼應該是分3段:
    3.1 第一段為國家代碼,固定為1位,切數字為1開頭,可能存在空格,或者不是1 的情況;
    3.2 第二段為區號,固定3位,可能沒有括號,也可能有括號;
    3.3 第三段為號碼,固定7位,變化很多,有直接7位,也有 3位+(空格、短線)+4位,還有存在其他非法字符、大于7位的情況;
  4. 三段中間可能存在空格、短劃線,也可能沒有;
  5. 寫的時候找到一個在線測試正則表達式的:工具
  6. 在查看 RegExp 的定義的時候,發現了.test() 的方法,可以用來測試某個字符串是否符合正則表達式,本題正好用上;

解答

function telephoneCheck(str) {
  // 祝你好運
    return /^1? ?(\d{3}|\(\d{3}\))[ |-]?\d{3}[ |-]?\d{4}$/.test(str);
}
telephoneCheck("555-555-5555");
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 要求 如果傳入字符串是一個有效的美國電話號碼,則返回true. 下面是一些有效號碼的例子(還有下面測試時用到的一些...
    Oracle_c113閱讀 269評論 0 0
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • Validate US Telephone Numbers Return true if the passed s...
    橙子_1259閱讀 368評論 0 1
  • 在使用第三方庫Masonry的過程中,遇到過各種各樣的坑,以下就把筆者使用過程中的問題總結如下: 控件必須要添加到...
    小碼農_gjw閱讀 430評論 0 2
  • 當夜醒來 輕輕地嘆了一口氣 給自己 施上霧色的薄妝 綴上露珠的耳環 描上彎月的眉線 在寂寞的肩頭,掛上柔風的披肩 ...
    李唐的小詩閱讀 375評論 4 5