回答
您可以使用正則表達式吧:
$pattern_phone = "|^[0-9\+][0-9\s+\-]*$|i";
if(!preg_match($pattern_phone,$phone)){
//Somethings wrong
}
沒有測試正則表達式,所以它可能不是100%正確。
這取決於OP的要求。但我懷疑這是100%正確的。你的正則表達式會匹配像'+'或'0 ----------'或'9 9'這樣的字符串,僅舉幾個假的數字。 – 2009-10-13 17:38:44
剝離後檢查10位數將檢查語法,但不檢查有效性。爲此,您需要確定該區域/國家/地區可用的有效數字,並可能編寫一個正則表達式來匹配模式。
NANP http://en.wikipedia.org/wiki/North_American_Numbering_Plan指定美國和加拿大的有效號碼。 – 2009-10-13 19:03:50
最好?我用這種方法看到的問題:
- 某些區號 - 例如000 - ### - #### - 無效。請參閱http://en.wikipedia.org/wiki/List_of_NANP_area_codes
- 某些交易所(如### - 555 - ####)無效。見http://en.wikipedia.org/wiki/555_%28telephone_number%29
- 有些人會在他們的號碼前輸入1,即1 - ### - ### - ####。
- 有些人只能以擴展名訪問,例如### - ### - #### x ####。
- 一些公司採用額外的數字,如1-800-GO-FLOWERS。額外的數字被電話系統忽略,但用戶可能希望能夠輸入整個事情。
- 即使您打折國家代碼,國際電話號碼也不一定是10位數字。
夠好嗎?很可能,但這取決於你和你的應用程序。
作爲一種確定用戶輸入電話號碼的方式,您建議做什麼? – JacobT 2009-10-13 17:34:35
取決於您需要的有效性水平。如果它的任務關鍵,我會有一個像http://www.twilio.com/這樣的系統嘗試發起一個真正的電話號碼。如果我沒有將這些數據用於任何重要的事情,那麼您的方法就足夠了。這一切都取決於應用程序。 – ceejayoz 2009-10-13 17:36:01
我建議你不要檢查電話號碼。如果他們搞砸了,讓用戶處理後果。與流行的觀點相反,人們不會經常搞亂形式,而當他們這樣做時,通常在提交之前就會發現他們的錯誤。 – 2009-10-13 17:36:44
像這樣驗證/過濾數據的問題通常歸結爲這個問題的答案:「我想成爲多嚴格?」然後進入一系列「功能」問題
- 你打算接受國際號碼嗎?
- 你打算接受擴展嗎?
- 你要允許不同的格式,即,(111)222-3333 VS 111.222.3333
根據業務規則,對這些問題的答案可能會有所不同。但是是最靈活的,我推薦3場拿電話號碼
- 國家代碼(可選)
- 電話號碼
- 擴展(可選)
全部3場可編程限制/只爲數字值過濾。然後,您可以將它們合併成一些可解析格式,或單獨存儲每個值。
剝離非數字字符將消除各種格式的問題。 – ceejayoz 2009-10-13 17:37:01
如果某件事情是「最好的」事情,那麼回答幾乎是不可能的(除非你是回答你自己的問題的人)。
你建議了,剝離所有非數字,然後檢查是否有10位數字,可能會導致不必要的行爲像一個字符串的方式:
喬治·華盛頓(1732年2月22日 - 月14,'99)是美國革命戰爭中的大陸軍司令 並擔任 作爲美國的第一位總統 。
因爲剝離所有非數字將導致該字符串2217321499
這是10個fdigits長,但我非常懷疑整個字符串應該被視爲一個有效的電話號碼。
剝離所有字符的更常見問題是某人以'### - ### - #### x ####''的格式輸入其擴展名。 – ceejayoz 2009-10-13 17:38:12
- 1. 如何驗證電話號碼格式
- 2. 電話號碼格式和驗證庫
- 3. 電話號碼格式驗證
- 4. 正則表達式驗證美國電話號碼的格式
- 5. 如何驗證特定格式的電話號碼?
- 6. 電話號碼驗證碼
- 7. PHP:驗證美國電話號碼
- 8. 驗證爲電話號碼
- 9. javascript驗證電話號碼
- 10. 電話號碼驗證
- 11. RegEx電話號碼驗證
- 12. Javascript電話號碼驗證
- 13. 電話號碼驗證?
- 14. 電話號碼驗證
- 15. Javascript電話號碼驗證
- 16. jQuery驗證電話號碼
- 17. 如何使用正則表達式驗證電話號碼加號(+)和「(0)」?
- 18. 如何驗證電話號碼中有+號碼?
- 19. 驗證不同格式的電話號碼無正則表達式
- 20. 電話號碼正則表達式確切格式
- 21. 如何驗證使用MVC.Net的移動/固定電話號碼格式?
- 22. 驗證Rails 4中的電話號碼格式 - REGEX
- 23. 驗證美國格式的電話號碼
- 24. jQuery的電話號碼格式檢查沒有驗證插件
- 25. 如何使用jquery.validate.min.js驗證電話號碼和電子郵件?
- 26. 的JavaScript驗證電話號碼使用正則表達式
- 27. 正則表達式美國電話號碼驗證
- 28. 用於驗證電話號碼的正則表達式失敗
- 29. 加強正則表達式來驗證電話號碼
- 30. 正則表達式來驗證美國電話號碼?
有些人不住在+1區:我的電話號碼全部開始+44。國際號碼不必*在國家代碼後有10位數字。當然,有很多不想打國際長途電話的好理由;-) – 2009-10-13 17:37:16
這是否假設您只查找美國/加拿大的電話號碼?一旦你達到國際前綴(德國+49)和/或特定的國家規則(例如在德國,並不是所有的電話號碼都具有相同的長度),事情就會變得非常棘手。 – Thorsten 2009-10-13 17:38:45
是的,僅限美國 – JacobT 2009-10-13 17:49:32