2017-04-30 31 views
-2

我有收集用戶詳細信息的網站表單。手機提交的內容非常棒,因爲它可以驗證電話號碼並防止任何人將該字段留空或鍵入單詞。用於手機驗證和不良號碼過濾器的正則表達式

這裏是我的正則表達式如何尋找該領域:

if (!preg_match('/^[0-9ext()+ -.:]{9,35}$/i', $Phone)){ 
$error.= "<li><font face=arial>Phone number is <em><strong>required</strong></em> if you're truly serious about generating $500/Day. Enter full number with area code. Also, you should use only the following characters: '+' , '0-9' , ' (' , ') ' , 'ext' , or 'x'. Example, <strong>(123) 555-1212</strong></font><br><br>"; 
$errors=1; 
} 

我得到的問題是,有些人進入僞造的號碼,如「555-1212」或「5551212」。如果有人添加假冒的「5551212」號碼,我怎麼能添加到上面的正則表達式來拋出錯誤消息?

輸入手機號:(應5551212匹配的字符串)

1-800-555-1212 
8585551212 
(619) 555-1212 

感謝你真棒幫助!

+0

字符類是字符或範圍,而不是字的列表。 '-'還需要在你的角色等級中轉義,或者轉移到開始或結束。 – chris85

+0

所以,如果我正確地閱讀了這個問題,如果前三個字符是'555',就不允許這麼做。如果這是正確的,也許'^(?!555)[0-9ext()+。: - ] {9,35} $'有效嗎? – chris85

+0

請添加幾個最佳案例輸入的例子。和另外兩個不好的情況。我不確定您要驗證的輸入 –

回答

0

這裏我們使用preg_replace來刪除非數字字符等以獲得有效的電話號碼。只包含數字。

Try this code snippet here

<?php 

ini_set('display_errors', 1); 

$phoneNo="(619) 555-1212"; 
$phoneNo= preg_replace("/[^\d]/", "", $phoneNo); 
if(strpos($phoneNo, "5551212")!==false) 
{ 
    $error.= "<li><font face=arial>Phone number is <em><strong>required</strong></em> if you're truly serious about generating $500/Day. Enter full number with area code. Also, you should use only the following characters: '+' , '0-9' , ' (' , ') ' , 'ext' , or 'x'. Example, <strong>(123) 555-1212</strong></font><br><br>"; 
    echo $errors=1; 
} 
+0

@ chris85但在其個人的問題給出兩個輸入'「555-1212」或「5551212」' –

+0

@ chris85我讀了OP的評論,我認爲這個解決方案可以嗎? –

+0

更新會更接近(雖然'555'可以是第一個或中間,而'1212'只是一個佔位符)。儘管如此,我仍然無法回答這個問題(這裏有很多不明的情況),零星的OP反應也沒有幫助。 – chris85