GOOGLE ADS

Freitag, 29. April 2022

Benutzerdefinierte Regel für die Validierung von Laravel

Ich habe eine benutzerdefinierte Regel erstellt, um die Handynummer zu validieren. mit spezifischem Muster und Anforderung.

Muster
[0-9]{3}-[0-9]{4}-[0-9]{4}

Die ersten drei Ziffern sollten eine der folgenden Nummern sein:

010, 020, 030, 040, 050, 060, 070, 080, 090

Unten ist mein Code für die benutzerdefinierte Regel.

App/Rules/MobileNumber.php

 public function passes($attribute, $value)
{
$pattern = "/^\[0-9]{4}-[0-9]{4}-[0-9]{3}$/";
return preg_match($pattern, $value);
}

Mein benutzerdefinierter Validator:

app/HTTP/Request/UserRequest.php

 use App\Rules\MobileNumber;
......
//manipulate data before validation
public function validationData()
{
$this->merge([
'tel_number' => $this->tel_number_1.'-'. $this->tel_number_2.'-'.$this->tel_number_3,
]);
}
public function rules()
{
return [
//other rules here....
'mob_number' => 'required', new MobileNumber()
];
}

Aber mit dem obigen Code funktioniert die Validierung nicht. tel_numbererreicht die passesMethode nicht, um die Validierung zu überprüfen. IE Wenn der Benutzer alphabetische Zeichen oder Symbole eingibt, werden sie zur Datenbankspeichermethode weitergeleitet.

Ich kann also nicht überprüfen, ob meine Regex korrekt ist oder nicht.

Es wäre sehr hilfreich, wenn jemand den Fehler hervorheben könnte, den ich hier gemacht habe. Bestätigen Sie auch, ob meine Regex korrekt ist, um die Validierung zu bestehen.


Lösung des Problems

Ich kann nur den letzten Punkt für die Regex-Validierung beantworten.

Sie haben die Reihenfolge in der Implementierung auf 4-4-3 statt 3-4-4 Stellen umgestellt.

Die Sequenzen 010, 020, 030, 040, 050, 060, 070, 080, 090 können mit abgeglichen werden, 0[1-9]0und Sie sollten das nicht entkommen, \[sonst werden Sie wörtlich abgeglichen.

Der aktualisierte Code könnte folgendermaßen aussehen:

$pattern = "/^0[1-9]0-\d{4}-\d{4}$/";

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...