Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Regex Erläuterungen (https://www.delphipraxis.net/216333-regex-erlaeuterungen.html)

sko1 12. Dez 2024 09:29

Regex Erläuterungen
 
Hallo,

mit TRegEx.IsMatch prüfe ich Inhalte auf Vorgaben von Datev.
Bei der Rechnungsnummer ist die Vorgabe

'^[a-zA-Z0-9$%&\*\+\-/]{1,36}$'

Da kommt "keine Übereinstimmung" raus wenn z.B. "WZ 123456" oder "12.123.45678" in der Rechnungsnummer steht.

Sehe ich das richtig, dass "a...z", "A...Z", "*", "+" und "-" erlaubt sind und die Länge 1-36 Zeichen sein muss?
Was aber bedeutet "$%&" ?

Danke
Ciao
Stefan

Der schöne Günther 12. Dez 2024 09:50

AW: Regex Erläuterungen
 
Protipp:
  1. Gehe auf https://regexr.com/
  2. Gib deinen regulären Ausdruck oben, und das was du prüfen willst unten ein
  3. Das Ding erklärt dir alles

Auch: Klar ist die zwischenmenschliche zärtliche Wärme hier in diesem Forum durch nichts zu toppen, aber grade solche Fragen sind eigentlich perfekt für x-beliebige KIs, welche auf deine Frage ausgespuckt hätte:

Zitat:

Hallo!

Du hast es fast richtig verstanden. Der reguläre Ausdruck ^[a-zA-Z0-9$%&*\+\-/]{1,36}$ erlaubt folgende Zeichen:

Buchstaben: a-z und A-Z
Zahlen: 0-9
Sonderzeichen: $, %, &, *, +, -, /
Die Länge der Zeichenkette muss zwischen 1 und 36 Zeichen liegen.

Die Zeichenfolge "$%&" bedeutet, dass diese speziellen Zeichen ebenfalls in der Rechnungsnummer erlaubt sind. Das & in deinem Beispiel ist wahrscheinlich ein HTML-Entity für das Zeichen &.

Die Beispiele "WZ 123456" und "12.123.45678" passen nicht, weil sie Leerzeichen und Punkte enthalten, die im regulären Ausdruck nicht erlaubt sind.

sko1 12. Dez 2024 09:58

AW: Regex Erläuterungen
 
Danke,

die Erklärung des Tools scheint sinnvoll, nicht aber der Regex den Datev vorgibt!

Warum soll "a", "m" und "p" extra noch mal erlaubt sein, ist doch schon vorn bei "a...z" erlaubt?

Ciao
Stefan

dummzeuch 12. Dez 2024 10:02

AW: Regex Erläuterungen
 
Zitat:

Zitat von sko1 (Beitrag 1544125)
Danke,

die Erklärung des Tools scheint sinnvoll, nicht aber der Regex den Datev vorgibt!

Warum soll "a", "m" und "p" extra noch mal erlaubt sein, ist doch schon vorn bei "a...z" erlaubt?

Ist es ja auch nicht. Es ist ein Fehler im RegEx. Dort sollte statt & nur & stehen.

himitsu 12. Dez 2024 10:21

AW: Regex Erläuterungen
 
Jupp, & sollte eigentlich ein & sein
und $% sind diese beiden Zeichen.

Und ansonsten ist alles richtig.
Da aber weder das Leerzeichen noch der Punkt erlaubt sind (nicht im Suchstring enthalten), können diese beiden Rechnungsnummern natürlich nicht getroffen werden.

sko1 12. Dez 2024 10:38

AW: Regex Erläuterungen
 
Vielen Dank, jetzt habe ich es begriffen!

Ciao
Stefan

sko1 13. Dez 2024 09:25

AW: Regex Erläuterungen
 
Kleine Nachfrage:

Gibt es eine einfacvh Möglichkeit die falschen Zeichen, die nicht dem Muster entsprechen, herauszufiltern und dem Benutzer anzuzeigen (also z.B. '"." und " " sind nicht erlaubt"'

Ciao
Stefan

himitsu 13. Dez 2024 09:37

AW: Regex Erläuterungen
 
Delphi-Referenz durchsuchenTRegEx.Replace ... natürlich mit einem Muster, welches das Gegenteil sucht :stupid:

Delphi-Quellcode:
'[^a-zA-Z0-9$%&*+\-\/]'

Delphi-Quellcode:
'[^a-zA-Z0-9$%&*+\-\/]+'

https://regex101.com/r/7ReRsj/1
https://regex101.com/r/7ReRsj/2

sko1 13. Dez 2024 09:53

AW: Regex Erläuterungen
 
Danke!

Es gibt mehrere Aufrufmöglichkeiten von Replace, irgendwie fehlen mir da Parameter...

Kannst Du mit bitte mit 3 Zeilen Code weiterhelfen?

Ciao
Stefan

shebang 13. Dez 2024 11:27

AW: Regex Erläuterungen
 
Mein Ansatz läuft über Match-Groups (die Runden Klammern um den Ausdruck von himitsu). Damit bekommst du jedes einzelne Zeichen, das nicht deiner Vorgabe entspricht.
Delphi-Quellcode:
  var res := TRegEx.Matches('12.123.45678', '([^a-zA-Z0-9$%&*+\-\/])');
  for var i := 0 to res.Count - 1 do ShowMessage('nicht erlaubt: "' + res[i].Value + '"');


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz