2017-06-12 92 views
1

我正在尋找一個符合我的要求的正則表達式。但我找不到確切的一個。正則表達式,以避免相等和序列數字

我的要求是

添加驗證檢查,以避免與電話號碼:

1)6位數字相等(例如000000; 111111)
2)序列號(7位)(例如 1234567; 7654321)

我嘗試,並得到這一段代碼最後

if (preg_match('/(\d)\1{5}/', $phone)) {  
    echo "Invalid Phone number"; 
} 

但它只匹配第一種情況。希望有人能幫助我。提前致謝!

+0

請提供更多序列應該對您2)選項無效。你想要什麼輸出:'9','7890123','1098765'? – mickmackusa

+1

正則表達式不允許您「編碼」一系列數字。您需要枚舉它們,例如'/(\ d)\ 1 {5} | 1234567 | 7654321 | etc。/'' –

+0

'5678901'是否有效? –

回答

1

這是我從正則表達式中脫離出來的時代之一。

這將執行您的預期驗證(幷包括「全天候」數字序列)。

PHP Demo

$phone='000000'; 
$len=strlen($phone); 
$rnd_the_clk=''; 
if(($len==6 && $phone==str_repeat($phone[0],6)) // length is 6, check only one integer used 
    || 
    ($len==7 && (strpos($rnd_the_clk,$phone)!==false || strpos($rnd_the_clk,strrev($phone))!==false))){ // length is 7, check sequential 
    echo "invalid"; 
}else{ 
    echo "valid"; 
}