AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Regex Erläuterungen

Ein Thema von sko1 · begonnen am 12. Dez 2024 · letzter Beitrag vom 20. Dez 2024
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Regex Erläuterungen

  Alt 12. Dez 2024, 10:29
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
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Regex Erläuterungen

  Alt 12. Dez 2024, 10:50
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.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Regex Erläuterungen

  Alt 12. Dez 2024, 10:58
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
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.623 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Regex Erläuterungen

  Alt 12. Dez 2024, 11:02
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.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Regex Erläuterungen

  Alt 12. Dez 2024, 11:21
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.
$2B or not $2B

Geändert von himitsu (12. Dez 2024 um 11:48 Uhr)
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Regex Erläuterungen

  Alt 12. Dez 2024, 11:38
Vielen Dank, jetzt habe ich es begriffen!

Ciao
Stefan
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Regex Erläuterungen

  Alt 13. Dez 2024, 10:25
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: Regex Erläuterungen

  Alt 13. Dez 2024, 10:37
Delphi-Referenz durchsuchenTRegEx.Replace ... natürlich mit einem Muster, welches das Gegenteil sucht

'[^a-zA-Z0-9$%&*+\-\/]'
'[^a-zA-Z0-9$%&*+\-\/]+'
https://regex101.com/r/7ReRsj/1
https://regex101.com/r/7ReRsj/2
$2B or not $2B

Geändert von himitsu (13. Dez 2024 um 10:42 Uhr)
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Regex Erläuterungen

  Alt 13. Dez 2024, 10:53
Danke!

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

Kannst Du mit bitte mit 3 Zeilen Code weiterhelfen?

Ciao
Stefan
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
131 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Regex Erläuterungen

  Alt 13. Dez 2024, 12:27
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 + '"');
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz