Preg_match Validierung von Sonderzeichen in einem string
Ich möchte, dass nur Buchstaben, zahlen, Leerzeichen, unserscore und Bindestriche.
Bisher dachte ich, dass das preg_match würde die Aufgabe:
if(preg_match('/[^a-z0-9 _]+$/i', $name)) {
$error = "Name may only contain letters, numbers, spaces, \"_\" and \"-\".";
}
Aber ich habe gerade festgestellt, dass spezielle Zeichen innerhalb einer Zeichenfolge, würde kein Fehler erzeugt. Zum Beispiel
Hallo"@£$joe
würde kein Fehler erzeugt. Ist es möglich, ein wenig zu ändern und damit es funktioniert, oder brauche ich eine andere Lösung?
InformationsquelleAutor 2by | 2012-04-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist das problem mit der
$
symbol. Sie sind speziell gefragt, das mit dem Ende des string. Der Ausdruck/[^a-z0-9 _]+$/i
nicht mithello"@£$joe
weiljoe
entspricht[a-z0-9 _]+$
; so ist es offensichtlich nicht übereinstimmen, wenn Sie negiert die Klasse. Entfernen Sie die$
symbol und alles wird wie erwartet:Testen Sie es in Ihren browser einfügen diese Zeilen nacheinander in die JavaScript-Konsole:
vielen Dank @salman
InformationsquelleAutor Salman A
Bringen Sie die
^
außerhalb des Charakter-Klasse:Einen
^
innen (am Anfang) einen Charakter-Klasse wirkt wie eine Charakter-Klasse negator.InformationsquelleAutor codaddict
verwenden Sie diesen regulären Ausdruck
[-_ a-zA-Z0-9]
Sorry, aber das funktioniert auch nicht
InformationsquelleAutor Vipin Jain
Hier Nehmen:
dieser Ausdruck ist von mir getesteten mit dummy-Daten.
verwenden Sie diesen code in eine html-Datei, überprüfen Sie die Validierung durch Befüllen Sie den Wert und drücken Sie die EINGABETASTE, um danach zu überprüfen, ob wahr oder nicht.
Hinweis:- reguläre Ausdrücke sind die gleichen für alle Sprachen.
kann Sie sein r tun, was einige falsch es ist in Ordnung, in meinem Fall. jede und jeder Wert richtig funktioniert, nehmen Sie diese Bearbeiten in der Antwort
Hmm, ja es funktioniert, wenn ich den code testen. Aber bei der Verwendung von PHP, das funktioniert jetzt:
if(preg_match('/^[a-z0-9\s\-_]+$/i', $name)) { $error = "Name may only contain letters, numbers, spaces, \"_\" and \"-\"."; }
Probieren Sie die neue php-code-das gibt auch das richtige sehen, das Bearbeiten
Ich denke, es wird funktionieren, wenn $ entfernt ist, wie Salman Eine Lösung. Danke für Ihre Zeit VIPIN
InformationsquelleAutor Vipin Jain