2012-03-28 16 views
3

Okay, ich möchte, dass der Benutzer jedes Zeichen von A-Z und jede Zahl von 0-9 eingeben kann, aber ich möchte nicht, dass sie "Sonderzeichen" eingeben.PHP - preg_match()

Code:

if (preg_match("/^[a-zA-Z0-9]$/", $user_name)) { 
    #Stuff 
} 

Wie ist es möglich, sie alle Zeichen gegeben zu überprüfen, und dann prüfen, ob diejenigen angepasst wurden? Ich habe versucht preg_match_all(), aber ich habe ehrlich gesagt nicht viel davon verstanden.

Wie wenn ein Benutzer "FaiL65Mal" eingegeben hat, möchte ich es zulassen und weitermachen. Aber wenn sie eintreten „Stör {]^7 (“ möchte ich es mit einem Fehler erscheinen

Antwort

8

Sie brauchen nur einen quantifier in Ihrem regex.

Null oder mehr Zeichen *:

/^[a-zA-Z0-9]*$/ 

ein oder mehrere Zeichen +.

/^[a-zA-Z0-9]+$/ 

Ihre regex als nur mit genau einem Zeichen eine Zeichenfolge übereinstimmen, die entweder einen Buchstaben oder eine Zahl ist, Y Sie möchten eine der obigen Optionen für null oder mehr oder eine oder mehrere, abhängig davon, ob Sie die leere Zeichenfolge zulassen oder ablehnen möchten.

+0

Thank you! Ich wünschte, sie erklärten dies in der Stunde + von Tutorials auf YouTube, die ich gesehen hatte. – MySQL

1

Ihr regulärer Ausdruck muss

/^[a-zA-Z0-9]{1,8}$/ 

Für Benutzernamen zwischen 1 und 8 Zeichen geändert werden. justieren Sie einfach die 8 an die entsprechende Nummer und vielleicht der 1.

Derzeit Ihren Ausdruck passt zu einem

+0

Ich glaube nicht, dass das Ziel darin bestand, den Benutzernamen auf 8 Zeichen zu beschränken. – jordanm

+0

Ich habe gerade 8 als Beispiel verwendet. Normalerweise haben Benutzer eine Obergrenze für Benutzernamen (wie sie zum Beispiel in Datenbanken gespeichert sind). Deshalb stelle ich den Kommentar, dass Sie diese Werte anpassen können. –

0

Bitte hier Mitte, dass preg_match() und andere preg_*() Funktionen nicht zuverlässig sind, weil sie entweder 0 oder false zurückkehren auf scheitern, so eine einfache wenn nicht auf Fehler werfen.

Betrachten CleanRegex mit:

if (pattern(('^[a-zA-Z0-9]{1,8}$')->matches($input)) 
{ 
    // Matches! :) 
}