Regex - exaktes dieses wort

Ronald Nickel

Legendäres Mitglied
Hallo
ich bräuchte mal die Regexprofies.
Für eine Formularvalidierung suche ich eine Regex, welches mir ein Wahr zurückgibt wenn der Inhalt eines Formulars beispieslweise "Auto" ist. Es darf nicht "Uato" oder "Autoo" sein sondern genau die 4 Zeichen "Auto". Um dem User ein wenig zu helfen sollte Groß/Kleinschreibung nicht relevant sein. (Nicht Case-Sensitive)

Kann mir da jemand helfen?

Gruß Ronny
 
... ok soweit bin ich schon gekommen

"^Auto$"

wie aber mache ich das mit der Groß und Kleinschreibung?

Ich versuche es tapfer weiter
 
was willst du mit regex hier? ein einfacher stringvergleich reicht doch. CODE
// case sensitiv
if($foo === "bar")
{ }

// nicht case sensitiv
if(strtolower($foo) === "bar")
{ }


 
...weil es um eine onSubmit Validierung eines ColdFusion Formularfeldes geht:

Eine Variable wird als Regexbedingung in ein formular eingesetzt. Der User muss nun genau dieseen Variablenwert einsetzen damit das Formular "freigegeben wird" Es muss also in diesem Fall ein Regex sein. Dürfte die validierung nach dem Submit sein könnte ich den Wert auch mit cfml nachträglich prüfen. Der einzugebene Wert muss 4-stellig, alphanummerisch und incasesensitiv sein.

Beispiel:

<cfinput type="text" name="checkit"
style="WIDTH: 50px"
validate="regular_expression"
pattern="^#myVar#$"
message="Der Checkwertist nicht korrekt!"
required="Yes">

Soweit funktioniert es ja auch. Bis auf die Sache mit der Groß- und Kleinschreibung.

Gruß Ronny
 
$input = "AuTOS";

echo (preg_match("~auto~ i", $input)) ? "success" : "fail";

wie groß und kleinschreibung beachtet wird steht selbst im regex wikipedia artikel...
versucht sich da etwa jemand an websiten und weiss eigentlich gar nicht wie das so funktioniert mit der programmiererei?
wink.gif

 
@monsiolicht
hättest du

1. ... meinen Post aufmerksam gelesen, wüsstest du ich lediglich einen Ausdruck suche, - OHNE synthaktische Adaption an PHP oder gleichen. (ColdFusion Formular)

2. ... mein Profil bzw. einige meiner Beiträge genauer angeschaut, würde der Verdacht sicher nicht aufkommen ich sei ein blutiger Anfänger. Zu meiner Rechfertigung: Auch ich kann nicht alles wissen - und reguläre Ausdrücke sind in diesem Fall NICHT mein Tagesgeschäft!

Schönen Tag noch
Ronny
 
zieh doch den ausdruck "~auto~ i" aus meiner adaption heraus?
 
Soll das Auto in einen Text gefunden werden, oder nur einen Feld mit einer Eingabemöglichkeit?

Wobei ~auto~i eh nicht klappt, da es auch Autoo, Autohaus und Matchboxauto akzeptiert.

/^auto$/i wäre richtig, wenn man keinen Text, sondern nur das Wort Auto erwartet in den Feld. Etwas besser ist sogar /^[Aa][Uu][Tt][Oo]$/, weil es einen kleinen Tick schneller geht. Wenn das Wort in einen Satz gefunden werden soll, würde eines von diesen passen (ungetestet):

CODE /(?<!\w)([aA][uU][tT][oO])(?!\w)/ # std
/(?<!\p{L})([aA][uU][tT][oO])(?!\p{L})/ # Fuer Unicode
/(?<![a-zA-Z0-9])([aA][uU][tT][oO])(?![a-zA-Z0-9])/ # wenn keine Platzhalter existieren für Zeichengruppen


Hier etwas mehr zu der verwendeten Funktionsweise: http://www.php.net/manual/de/regexp.reference.assertions.php


RegEx unterscheiden sich nicht unbedingt massiv, bei einigen Funktionen, je nach Programmiersprache und verwendeter Bibliothek werden die Optionen direkt die Optionen nach den Begrenzern geschrieben, oder seperat, wobei die Begrenzer komplett wegfallen, in meinen Fall habe ich "/" als Begrenzer gewählt.
 
Aha, und wie verhält es sich wenn man nur die 4stellige Zahl "1234"erwartet?
/^([0-9])([1][2][3][4])$/ wird man ja wohl so nicht übernehmen können

Gruß Ronny
 
Das hängt davon ab, wie Du sie filern möchtest, das was Du da nun hast wäre eine Zahl von 0-9 mit "1234" am Ende.
 
Dann versuche ich es mal ein anderes Beispiel.
Die Wertvogabe ist "1G4T"
Der Ausdruck soll ein Wahr zurückhgeben wenn der User einer der folgenden Zeichenreihenfolgen eingibt:
1g4t, 1G4t, 1g4T, 1G4T.

Bei "1gt4" soll die Sache schon wieder Nicht WAHR sein.
Ist da überhaupt so zu realisieren?

Gruß Ronny
 
QUOTE (Ronald Nickel @ Di 13.09.2011, 15:17) [...] Ist da überhaupt so zu realisieren? [...]

Grundsätzlich ja.

Einzelnes Wort: /^1[gG]4[tT]$/
Textvariante: /(?<!\w)(1[gG]4[tT])(?!\w)/

Wird es gefunden wird, ist es da (TRUE), wenn nicht, dann halt nicht (FALSE).
 
Ich weiß nicht ob ColdFusion mit Modifieren umgehen kann aber in PHP dürfte das so gehen:

/^1g4t$/i
 
Also ^Auto$ funktioniert soweit, - bis auf die Sache mit der Groß- und Kleinschreibung. Keine Ahnung warum der Rest von den beigesteuerten Ausdrücken nicht funktioniert. Ich habe jetz ert mal ne Notlösung gebbaut und mit "LCASE()" die Kleinschreibung der Wertevorgabe erzwungen. Nicht gerade das Programmiertechnuische Hightlight aber es geht vorerst mal.

Vielen Dank an alle
Gruß Ronny
 
ja, habe ich - funktioniert aber leider nicht. Wenn ich twas mehr Zeit habe werde ich mich mal genauer mit den Regex-Möglichkeiten bei CFML befassen

Trotzdem danke

Gruß Ronny
 
Vermutlich musst Du den Case über die Funktion lösen (oder was das Konstrukt da ist), oder halt wie oben in eckigen Klammern, wie ich es oben vorgemacht habe. Ist Dir eigentlich auch klar, dass Du die Beispiele dann nicht so /^1[gG]4[tT]$/ schreiben darfst für Cold Fusion, sondern so ^1[gG]4[tT]$ (bzw. ^[Aa][Uu][Tt][Oo]$) schreiben musst?
 
Zurück
Oben