回答
這是我在網上找到的一個很酷的正則表達式。它以幾乎任何美國格式驗證一個數字並將其轉換爲(xxx)xxx-xxxx。我認爲這很好,因爲那時人們可以使用他們習慣使用的任何格式輸入任何10位數字的美國電話號碼,並從中得到格式正確的號碼。
以下是可以放入MY_form_validation類的全部函數。我希望我的表單允許空字段,所以如果你想強制一個值,你必須改變它。
function valid_phone_number_or_empty($value)
{
$value = trim($value);
if ($value == '') {
return TRUE;
}
else
{
if (preg_match('/^\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}$/', $value))
{
return preg_replace('/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/', '($1) $2-$3', $value);
}
else
{
return FALSE;
}
}
}
最好的辦法是根本不驗證電話號碼,除非你絕對是100%肯定你只處理美國或至少北美的電話號碼。只要你允許來自歐洲的電話號碼,我不認爲有一個涵蓋所有可能性的正則表達式。
是的。這與電子郵件地址基本相同,如下所示:http://www.regular-expressions.info/email.html – 2009-12-20 23:09:23
所有電話號碼的常見情況是什麼?沒錯,**號**!看到我的帖子下面 – 2009-12-20 23:18:29
@丹:你的帖子高於... – MiseryIndex 2009-12-21 03:09:26
帶出非數字與此:
$justNumbers = preg_replace('/\D/', $_POST[ 'phone_num' ]);
,看看是否有足夠的字符!
$numRequired = 7; // make your constraints here
if(strlen($justNumbers) < $numRequired){ /* ... naughty naughty ... */ }
這是鬆散的,當然,但會爲國際號碼的工作以及(所有它真的做的,如果有超過7個數字輸入是看到)。
只需根據您的規格更改所需的位數。
關於這一點的事情是,有很多地方使用10位數字的電話號碼,有些地方仍然使用7號。這也不會影響使用區號或連字符/空格的括號來區分pre和修復了電話號碼。 – DrewRobertson93 2014-08-26 16:56:01
丹解釋的正則表達式解決方案將是實現它的方法 - 但您可能想重新考慮驗證電話號碼。如果用戶想添加他/她在紙上做的筆記,該怎麼辦? - 我看到的電話號碼字段中輸入的是這樣的東西很多值:
307-555-2323(家用)
或
307-555-3232下午6點後
我想今天我們可以假設用戶知道要輸入什麼。
通過驗證限制數據輸入總是有很好的理由。字段不是用於筆記,它們是用於特定信息。 – 2010-06-03 21:02:41
- 1. Codeigniter中的電話號碼驗證
- 2. javascript表單驗證電話號碼
- 3. 表單驗證問題(電話號碼)
- 4. 驗證表單中的電話號碼
- 5. Jquery表單驗證 - 電話號碼
- 6. 電話號碼驗證碼
- 7. iPhone的簡單電話號碼驗證
- 8. 驗證爲電話號碼
- 9. javascript驗證電話號碼
- 10. 電話號碼驗證
- 11. RegEx電話號碼驗證
- 12. Javascript電話號碼驗證
- 13. 電話號碼驗證?
- 14. 電話號碼驗證
- 15. Javascript電話號碼驗證
- 16. jQuery驗證電話號碼
- 17. 表單驗證的電子郵件網站和電話號碼
- 18. 表單驗證對於電話號碼/名稱不起作用
- 19. PHP:驗證美國電話號碼
- 20. 驗證英國電話號碼
- 21. 電話號碼沒有得到驗證
- 22. 電話號碼格式和驗證庫
- 23. 國際電話號碼驗證與RegEx
- 24. Firebase電話號碼驗證問題
- 25. 驗證電話號碼保存
- 26. 電話號碼格式驗證
- 27. 使用JavaScript驗證電話號碼
- 28. jquery驗證電話號碼和分機
- 29. 如何驗證電話號碼格式
- 30. 使用jQuery的電話號碼驗證
如何將其整合到驗證線內?我是CI noob ... – 2009-12-23 03:01:17
在您的庫文件夾中創建名爲MY_form_validation的文件。確保你在控制器中調用$ this-> load-> library('form_validation')。然後在處理提交的函數中,執行$ this-> form_validation-> set_rules('phone_1','Phone 1','valid_phone_number_or_empty'); phone_1是您的表單字段。 – Dana 2009-12-23 14:50:00
而不是使用trim,你應該從Dan Beam獲取第一行代碼(但用$ value替換$ _POST),然後按照你想要的方式進行格式化。 – Dennis 2010-01-28 23:42:35