Syntax Prüfung eines Strings
Hallo zusammen,
mir fällt es momentan schwer hier den richtigen Ansatz zu finde.
Ich möchte einen String der über eine Eingabeaufforderung kommt z.B. "1234-i-12345678" auf Richtigkeit überprüfen.
die ersten 4 und die letzten 8-Stellen müssen Zahlen sein. Dazwischen steht immer ein -i-.
Kann mir dabei jemand helfen?
Vorzugsweise in Powershell.
LG und ein gutes neues Jahr
Tulskie
mir fällt es momentan schwer hier den richtigen Ansatz zu finde.
Ich möchte einen String der über eine Eingabeaufforderung kommt z.B. "1234-i-12345678" auf Richtigkeit überprüfen.
die ersten 4 und die letzten 8-Stellen müssen Zahlen sein. Dazwischen steht immer ein -i-.
Kann mir dabei jemand helfen?
Vorzugsweise in Powershell.
LG und ein gutes neues Jahr
Tulskie
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 5275120454
Url: https://administrator.de/forum/syntax-pruefung-eines-strings-5275120454.html
Ausgedruckt am: 06.01.2025 um 21:01 Uhr
6 Kommentare
Neuester Kommentar
Regular Expressions sind deine Freunde ...
Wurstel
$pattern = '^\d{4}-i-\d{8}$'
do{
$eingabe = Read-Host "String eingeben [4 Ziffern]-i-[8 Ziffern]"
if ($eingabe -notmatch $pattern){
write-host "Eingabe hat ein falsches Format, bitte wiederholen..." -F Yellow
}
}until($eingabe -match $pattern)
write-host "Ihre Eingabe lautet: $eingabe"
Zitat von @Tulskie:
Ich sollte noch dazuschreiben das alles in einer Do While schleife läuft.
Do {
hier wird über eine Message-Inputbox der String eingegeben
} while (prüfung ob Ausdruck okay, ansonsten erneuter schleifendurchlauf.)
Ich sollte noch dazuschreiben das alles in einer Do While schleife läuft.
Do {
hier wird über eine Message-Inputbox der String eingegeben
} while (prüfung ob Ausdruck okay, ansonsten erneuter schleifendurchlauf.)
Na und? Macht doch bis auf die Bedingung ehrlich gesagt keinen Unterschied ob nun do-while oder do-until nimmst, steht doch alles was du brauchst schon oben und macht genau das ....
-match Operator und der passende regex pattern, fettich ist die choose.
Code lesen und verstehen und bei dir einbauen ... wo ist jetzt das Problem??
Ja klar, mach aus dem -match einfach ein -cmatch und aus -notmatch ein -cnotmatch dann wird der Regex "case sensitive" überprüft.
Alternativ kannst du das auch im Pattern so anpassen damit er case-sensitive ist, dann ist das Ändern der Operatoren nicht nötig
Das (?-i) am Anfang macht ihn case-sensitive
Du könntest dem User Groß- und Kleinschreibung aber auch einfach erlauben und dann hinterher einfach mit
alles klein machen . Das nervt den User weniger .
Alternativ kannst du das auch im Pattern so anpassen damit er case-sensitive ist, dann ist das Ändern der Operatoren nicht nötig
$pattern = '(?-i)^\d{4}-i-\d{8}$'
Du könntest dem User Groß- und Kleinschreibung aber auch einfach erlauben und dann hinterher einfach mit
$eingabe.toLower()