| |
|
|
- Seite 1 - |
|
Nico Madysa | Ab XProfan10 gibt es den Befehl Match$, mit dem geprüft wird, ob ein Sting einem bestimmten Muster entspricht, also z.B. zuerst ein Großbuchstabe kommt, dann 3 Kleinbuchstaben, ein Leerzeichen und danach 3 Ziffern. Ich habe hier einiges gesammelt mit einem kleinen Beispielprogramm: KompilierenMarkierenSeparierenDef $Name "[A-ZÄÖÜ]([a-zäöü]+|~.)(~-[A-ZÄÖÜ]([a-zäöü]{2,}|~.))* [A-ZÄÖÜ]([a-zäöü]+|~.)(~-[A-ZÄÖÜ]([a-zäöü]{2,}|~.))*"
Def $Time "((0|1|)[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?"
Def $Vorw "[1-9][0-9]{1,4}"
Def $Telnum "[1-9][0-9]{4,7}"
Def $Url "(https://)?(www~.)?[^@|²³.]{1,}(~.[^@|²³ .]{2,3}){1,3}"
Def $Street "([A-Z][a-z]{2,}~.? )+(0[1-9][0-9]*|[1-9][0-9]*)"
Def $Plz "[0-9]{5} [A-Z][a-z]{2,}"
Def $RoemM "M*"
Def $RoemC "(C[DM]|C[DM]|D?C{0,3})?"
Def $RoemX "(X[LC]|X[LC]|L?X{0,3})?"
Def $RoemI "(I[VX]|I[VX]|V?I{0,3})?"
Declare E& , T& , Roem$ , Addr$ , Tel$ , XTel$
Roem$ = "^" + $Roemm + $Roemc + $Roemx + $Roemi + "$"
Addr$ = "^" + $Name + "(
|[,;] )" + $Street + "(
|[,;] )" + $Plz + "$"
Tel$ = "^(0"+$Vorw+"/)?"+$Telnum+"$"
XTel$ = "^((~+49 ("+$Vorw+"|~(0"+$Vorw+"~))|0049 "+$Vorw+"|~(0049 "+$Vorw+"~)|0"+$Vorw+"|~(0"+$Vorw+"~)) )?"+$Telnum+"$"
+49 30 12345678
+49 (030) 12345678
0049 30 12345678
(0049 30) 12345678
030 12345678
(030) 12345678
12345678
Window 300 , 200 - 200 , 200
Cls External("User32","GetSysColor",15)
E& = Create("MultiEdit",%Hwnd,"",5,05,180,(-20))
T& = Create("Text",%Hwnd,"",5,30,180,160)
Whilenot IsKey(27)
Waitinput
Match$(XTel$,Gettext$(E&))<- Addr$ durch zu testende Konstante/Variable ersetzen
If %Matchpos >= 0
Settext T& , $Match
Else
Settext T& , "ungültig"
Endif
Wend
$Name = Vorname + Nachname Doppelnamen sind mittels Bindestrich möglich $Time = hh:mm oder hh:mm:ss $URL = Internetadresse, z.B. [...] leider auch www.de $Street = Straßenname + Hausnummer, z.B. Str. des Friedens 1 $PLZ = Postleitzahl + Ort, z.B. 02979 Burghammer Roem$ = Römischess Zahlzeichen, z.B. CXVII Addr$ = komplette Adresse, durch Chr$(13), Komma oder Semikolon getrennt. Tel$ = Festnetznummer, auch mit Vorwahl möglich, z.B. 011111/99999 XTel$ = erweiterte Festnetznummer, folgende Formate sind möglich: +49 30 12345678 +49 (030) 12345678 0049 30 12345678 (0049 30) 12345678 030 12345678 (030) 12345678 12345678 Kritik und Meinung sind ausdrücklich erwünscht. |
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
RGH | Außerdem setzt sich immer mehr die internationale Schreibweise mit Bindestrich durch:
+49-30-1234567 +4930-1234567
oder gar ohne alle Trennzeichen (wird gerne auch bei Handynummern verwandt):
+49301234567
Nicht zu vergessen die Versionen mit 00 statt +.
Am besten sollte man Leerzeichen, Bindestriche und Klammern einfach ausfiltern. Es könnten ja bei Nenenstellenanlagen noch weitere Bestandteile folgen:
+49-30-123456-78
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 12.06.2006 ▲ |
|
|
|
|
Michael Wodrich | Habe beim Regulator wohl nicht konvertiert??!?
Aber das kann man ja von Hand nachholen. Bei der Prüfung fällt übrigens auf, das man nicht mit den runden Klammern so herumwerfen sollte. Die haben nämlich eine ganz klare eigene Funktion.
Die regulären Ausdrücke also bitte ohne die runden Klammern.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 13.06.2006 ▲ |
|
|
|
|
Clemens Meier | [quote:3a4ca13962=Michael Wodrich] Die regulären Ausdrücke also bitte ohne die runden Klammern. [/quote:3a4ca13962] Verstehe ich nicht, wie kann man reguläre Ausdrücke ohne runde Klammern erstellen. Die sind ein absolutes Muss um sogenannte Subpattern zu bilden. |
|
|
| |
|
|
|
Michael Wodrich | Richtig, der Name fiel mir nicht so schnell ein... |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 13.06.2006 ▲ |
|
|
|
| |
|
- Seite 2 - |
|
|
Nico Madysa | Hossa, Torsten hatte recht. Mit einem kleinen Langeweile-Schnipsel kann man scheinbar eine große Diskussion auslösen! |
|
|
| |
|
|
|
Clemens Meier | Warte ab, bis XProfan 10 offiziell erschienen ist. Dann wird iF ein eigenes Forum für reguläre Ausdrücke öffnen müssen. (Die spinnen doch, die Programmierer) |
|
|
| |
|
|
|
Nico Madysa | So, habe die Sache jetzt bearbeitet. Statt $Tel habe ich jetzt Tel$ und XTel$ (extended telephon number). Tel$ ist im Format (Vorwahl/)Nummer, XTel$ untersützt folgende Formate: +49 30 12345678 +49 (030) 12345678 0049 30 12345678 (0049 30) 12345678 030 12345678 (030) 12345678 12345678
@Clemens: In Tel$ muss die erste Ziffer der Vorwahl eine 0 sein, das ist nämlich die sogenannte Verkehrsausscheidungsziffer, mit der Ferngespäche von Ortsgesprächen unterschieden werden. Anrufe in andere Länder müssen mit zwei Nullen beginnen (in Nummernangaben auch mit +), wobei die Null der Vorwahl wegfällt.
Freitag werde ich wohld en neuen Code reinstellen. Hab ihn grad nich dabei ... |
|
|
| |
|
|
|
Clemens Meier | [quote:b9be02c293=Nico Madysa] @Clemens: In Tel$ muss die erste Ziffer der Vorwahl eine 0 sein, das ist nämlich die sogenannte Verkehrsausscheidungsziffer, mit der Ferngespäche von Ortsgesprächen unterschieden werden. Anrufe in andere Länder müssen mit zwei Nullen beginnen (in Nummernangaben auch mit +), wobei die Null der Vorwahl wegfällt.[/quote:b9be02c293] Das ist soweit richtig, habe nie etwas anderes behauptet. |
|
|
| |
|
|
|
Nico Madysa | Habe ich auch nicht geschrieben. Wollte die Information nur gegeben haben. |
|
|
| |
|
|
|
Nico Madysa | Nun ja ... ähm ... hörtmazu, lustige ... Geschichte ... Mir hatte mein Computer etwas merkwürdige Geräusche gemacht. Da habe das Teil heruntergefahren, meinen 10-Tonnen-Röhrenbildschirm abgestöpselt und auf mein Bett gestellt, die Hülle meines Computers abgenommen. Siehe da, der Ventilator war recht verstaubt. Ich also das Teil abgestaubt, ganz vorsichtig natürlich, auch mal kurz reingepustet. Also det Teil abgestaubt, PC-Hülle wieder raufgeklippt, 10-Tonnen-Röhrenbildschirm wieder draufgestellt(nein, ich habe keinen Tower), wieder alles schön zusammengetüddelt, angeschalten wunderbar. ... bis Windows gestartet ist. Sobal der (bei mir Standart-Grüne) Desktop angezeigt werden soll, wird alles schwarz. Und da macht sich die Disketten-Ansteuerung recht schwer. Ich brauch jetzt keine Tipps, davon habe ich schon genug, und ich habe auch schon das Match$-Programm neu geschrieben. Jedenfalls ich habe $Tel rausgefeuert, stattdessen habe ich $Vorw und $Telnum. Und dann noch zwei Vaiablen Tel$ und XTel$. Tel$ unktioniert wie vorher also 0Vorwahl/Nummer , bzw. Nummer .Und XTel akzeptiert folgende Angaben: +49 30 12345678 +49 (030) 12345678 0049 30 12345678 (0049 30) 12345678 030 12345678 (030) 12345678 12345678 Um die Sache hier etwas kürzer zu halten, habe ich einfach den ersten Beitrag editiert, dort ist also der neue Code zu finden. Viel Spaß beim Fehler suchen/finden. |
|
|
| |
|
|
|
Nico Madysa | Nanü? Drei Versionen und schon perfekt? Oder habe ich meine Fehler so gut versteckt, dass die niemand findet? |
|
|
| |
|
|
|
Michael Wodrich | Schau Dir doch mal unter den Code-Snippets den RegEx-Tester an.
Definiere alle möglichen und unmöglichen Eingaben und teste Sie damit durch.
Du mußt nur beachten das ich dort die Escapesequenzen ausgeschaltet habe...
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 24.06.2006 ▲ |
|
|
|