Der folgende Beitrag wurde am 17. 02. 2006, 09:59 Uhr von RuD veröffentlicht.
Hallo,
ich versuche krampfhaft eine Regex hinzukriegen:
er soll auf jede Art von Waehrungsformatierung passen:
(\$[0-9]{1,4}\.[0-9]{0,2})|(\$[0-9]{1,4})|([0-9]{1,4}\$)|([0-9]{1,4}\.[0-9]{0,2}\$)
kommt mir schon ein bisschen lang vor!
er soll auf $12.30, $12, 12$, 12.30$, $12,30 usw. passen
wie kann man festlegen, das z.B. ein Dollarzeichen davor oder dahointer stehen kann aber nicht muss. Oder ein Punkt oder Komma in der Mitte, aber nur wenn danach noch zwei Zahlen kommen?
Tschau
--
__
________ _____/ //
/ ___ // / __ //
/ // / //_/ /_/ //
/_// /___________//
Der folgende Beitrag wurde am 17. 02. 2006, 10:23 Uhr von RuD veröffentlicht.
Hi, habs selbst verkuerzt aber ganz gefaellts mir nicht:
ich denke ganz opimal isses noch ne:
(\${0,1}[0-9]{1,4}\.{0,1}\,{0,1}[0-9]{0,2}\${0,1})
Tschau
--
__
________ _____/ //
/ ___ // / __ //
/ // / //_/ /_/ //
/_// /___________//
Der folgende Beitrag wurde am 17. 02. 2006, 10:40 Uhr von MudGuard veröffentlicht.
Hi,
> Hi, habs selbst verkuerzt aber ganz gefaellts mir nicht:
>
> ich denke ganz opimal isses noch ne:
>
> (\${0,1}[0-9]{1,4}\.{0,1}\,{0,1}[0-9]{0,2}\${0,1})
{0,1} kann man als ? schreiben.
$123.,$
wird von Deinem Ausdruck auch gefunden.
cu,
Andreas
--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
Der folgende Beitrag wurde am 17. 02. 2006, 10:38 Uhr von MudGuard veröffentlicht.
Hi,
> Hallo,
> ich versuche krampfhaft eine Regex hinzukriegen:
> er soll auf jede Art von Waehrungsformatierung passen:
>
> (\$[0-9]{1,4}\.[0-9]{0,2})|(\$[0-9]{1,4})|([0-9]{1,4}\$)|([0-9]{1,4}\.[0-9]{0,2}\$)
>
> kommt mir schon ein bisschen lang vor!
>
> er soll auf $12.30, $12, 12$, 12.30$, $12,30 usw. passen
Also: zwei Alternativen: Währungsbezeichner + Zahl bzw. Zahl + Währungsbezeichner
(\$|USD ?)zahl|zahl(\$| ?USD)
Zahl soll sein (wenn ich Dich richtig verstanden habe:
Vorkommateil evtl. gefolgt von Dezimaltrenner + 2 Nachkommastellen
Vorkommateil: [0-9]+ bzw. \d+ wenn Dein Regextool \d unterstützt
Dezimaltrenner + 2 Nachkommastellen: [.,]\d{2} bzw. [.,][0-9]{2}
zahl ist also: \d+([.,]\d{2})? bzwl. [0-9]+([.,][0-9]{2})?
Zusammen mit dem Rest:
(\$|USD ?)\d+([.,]\d{2})?|\d+([.,]\d{2})?(\$| ?USD)
bzw.
(\$|USD ?)[0-9]+([.,][0-9]{2})?|[0-9]+([.,][0-9]{2})?(\$| ?USD)
Wenn Du die Einzelteile nicht benötigst, kannst Du die () noch durch (?:) [i.e. non-capturing parentheses] ersetzen, das macht die Sache etwas performanter.
Also
(?:\$|USD ?)[0-9]+(?:[.,][0-9]{2})?|[0-9]+(?:[.,][0-9]{2})?(?:\$| ?USD)
(die Variante für \d überlasse ich Dir ;-)
Wenn das ganze jetzt noch an Wortgrenzen steht, kann man nochmal etwas Performance rausholen, indem man \b(?: )\b um das ganze legt:
\b(?:(?:\$|USD ?)[0-9]+(?:[.,][0-9]{2})?|[0-9]+(?:[.,][0-9]{2})?(?:\$| ?USD))\b
Wenn Du nur $ als Währungszeichen hast, kannst Du natürlich aus (?:\$| ?USD) einfach \$ machen.
> wie kann man festlegen, das z.B. ein Dollarzeichen davor oder dahointer stehen kann aber nicht muss. Oder ein Punkt oder Komma in der Mitte, aber nur wenn danach noch zwei Zahlen kommen?
Mit Zahlen meinst Du ja vermutlich Ziffern, oder?
cu,
Andreas
--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
Der folgende Beitrag wurde am 17. 02. 2006, 10:53 Uhr von RuD veröffentlicht.
Danke, so ausfuehrlich war zwar nicht noetig. Aber nioch mal vielen Dank.
RuD
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4