FCC高級編程篇之Validate US Telephone Numbers

Validate US Telephone Numbers

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.
Here are some helpful links:

檢查傳入的字符串是否為美國電話號碼,并返回真假。

由所給示例可以看出。美國電話一共分為3個(gè)部分:

  • 第一部分是可以沒有的國家代碼,固定為1
  • 第二部分是區(qū)號,長度固定為3
  • 第三部分是電話號碼,長度為7

對于電話號碼,用正則匹配是最簡單的。

這里先匹配電話號碼。

1.png

\d{7}能識別連續(xù)7位數(shù)的電話號碼,但示例中有分隔為3+4形式的號碼,因而改寫為符合3+4形式的正則,這里暫且假定分隔符為1個(gè)空格。

2.png

\d{3} \d{4}能識別被空格分隔的7位電話號碼了,但還不夠,現(xiàn)在在加上沒有空格和有短橫線的情況。

3.png

到這就已經(jīng)完成電話號碼了,接下來做區(qū)號。

區(qū)號有且只有3位數(shù),但可能被()包裹著,與電話號碼間可能隔著空格、短橫線抑或什么都沒有。這里先處理可能被()包裹的情況。

4.png

\(\d{3}\)匹配到了()以及里面的內(nèi)容,但有的區(qū)號并沒有被括號包裹。在加上這種情況。

5.png

現(xiàn)在將區(qū)號和電話號碼連在一起。

6.png

行百里者半于九十,這里已經(jīng)完成一半了,最后來考慮國家代碼的問題。

美國的國家代碼為1,先考慮是否以1開頭。

7.png

考慮開頭的1不存在的情況。

8.png

由示例得出國家代碼與區(qū)號之間可能有1個(gè)空格。

先是有空格的。

9.png

然后是沒有空格的。

10.png

現(xiàn)在匹配美國電話號碼的正則表達(dá)式已經(jīng)基本完成了。再考慮下添加了非法字符的情況。上面的正則能匹配到前一部分是美國電話的號碼,但不能避免末尾添加了其他字符的情況。

11.png

因此還需要加上末尾的判斷。

12.png

大功告成?,F(xiàn)在編寫函數(shù)來測試一下數(shù)據(jù)。

function telephoneCheck(str) {
  return /^1? ?(\(\d{3}\)|\d{3})[ |-]?\d{3}[ |-]?\d{4}$/.test(str);
}

測試結(jié)果如下圖。

13.png

測試結(jié)果顯示編寫的函數(shù)如期運(yùn)行,這樣FCC的高級算法第一題就完成了。

PS. 圖中所用正則測試工具為開源中國的在線正則表達(dá)式測試

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目 Validate US Telephone Numbers如果傳入字符串是一個(gè)有效的美國電話號碼,則返回tr...
    delphuy閱讀 429評論 0 0
  • 初衷:看了很多視頻、文章,最后卻通通忘記了,別人的知識依舊是別人的,自己卻什么都沒獲得。此系列文章旨在加深自己的印...
    DCbryant閱讀 4,245評論 0 20
  • iOS中使用正則表達(dá)式就不得不提NSRegularExpression,所以我們需要先搞清楚什么是NSRegula...
    sunmumu1222閱讀 2,478評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 11,056評論 0 23

友情鏈接更多精彩內(nèi)容