2017-06-12 5 views
1

Ich suchte nach einer Regex, die meiner Anforderung entspricht. Aber ich konnte keinen genauen finden.Regex zur Vermeidung von Gleich- und Ziffernfolge

Meine Forderung ist

Validierungsprüfung In den Telefonnummern mit zu vermeiden:

1) 6 Ziffern gleich (zB 000000; 111111)
2) Sequenznummern (7-stellig) (zB 1234567;

7654321)

ich habe versucht, und habe dieses Stück Code schließlich

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

Aber es entspricht nur dem ersten Fall. Hoffe, jemand wird mir helfen. Danke im Voraus!

+0

Bitte mehr Sequenzen liefern, die in Bezug auf Ihre 2) Option ungültig sein sollte. Welche Ausgabe möchten Sie: '9',' 7890123', '1098765'? – mickmackusa

+1

Mit Regex können Sie keine Ziffernfolge "codieren". Sie müssten sie aufzählen, wie zum Beispiel "/ (\ d) \ 1 {5} | 1234567 | 7654321 | etc ./" " –

+0

Ist '5678901' gültig oder nicht? –

Antwort

1

Dies ist eine jener Zeiten, in denen ich mich von Regex lösen würde.

Dies wird Ihre erwartete Validierung durchführen (und enthält "rund um die Uhr" Zahlenfolgen).

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"; 
} 
Verwandte Themen