marcus-42
Goto Top

RegularExpression - Leerzeichen

Hallo,

vermutlich liegt es daran, dass ich sie so selten nutze: Mit regulären Ausdrücken stehe ich auf Kriegsfuß. Vielleicht mag mir jemand helfen:

Ich habe eine Zeichenfolge mit ideal folgendem Aufbau:

A123-456X

und möchte hieraus den Zahlenwert 123456 extrahieren.

In der Praxis - viele Anwender - kommen diverse Abweichungen vor, die ebenfalls erkannt werden wollen:

- auch 7- und mehrstellige Ausgaben sind möglich ("-" als Tausendertrennzeichen, also auch A-12-345-678)

- manchmal fehlt der Bindestrich (A123456X),

- manchmal wird der Bindestrich durch ein Leerzeichen ersetzt (A123 456X),

- mal um ein Leerzeichen erweitert (A123 - 456X).


Soweit bin ich gekommen:

preg_match('/A[0-9]+-\\d\\d\\dX/i', $quelle, $ziel);


Kann mir jemand mit den Sonderfällen weiterhelfen?


Viele Grüße
Marcus


PS Es geht darum, dass auf einem Klassenkonto eingehende Überweisungen anhand des Verwendungszwecks einem Schüler mit dessen Schüler-Nr. zugeordnet wird. Ich kann die Eingabe daher nicht über das Eingabeformular regulieren.

Content-ID: 7596499639

Url: https://administrator.de/forum/regularexpression-leerzeichen-7596499639.html

Printed on: January 23, 2025 at 17:01 o'clock

Tezzla
Tezzla Jun 20, 2023 at 20:54:25 (UTC)
Goto Top
Moin

 [^0-9]+ 

Gibt dir alle Zahlen zurück.
Die kannst du zB dann noch trimmen und zurück in die gewünschte Form bringen (splitten). Im Anschluss dann vergleichen.

Hilft das?
7426148943
Solution 7426148943 Jun 20, 2023 updated at 22:16:20 (UTC)
Goto Top
Nimm preg_replace, alles was nicht eine Zahl ist ersetzen durch nichts, fertig ist die Soße ...
$number = preg_replace('/[^\d]/','','A123 - 456X');  
https://tio.run/##K8go@P/fxr4go4ArNTkjX6GgKDU9vii1ICcxOVVDXT86LiYlVl9dRx ...

Zeppel
Marcus-42
Marcus-42 Jun 21, 2023 at 02:58:40 (UTC)
Goto Top
Danke!