Reguläre Ausdrücke
Reguläre Ausdrücke zu verwenden, kann viel Arbeit ersparen, wenn man nach einem Muster sucht. In einem der letzten Projekte musste ich relativ häufig mit (einfachen) regulären Ausdrücken arbeiten. Dabei ist mir das Tool RegEx Coach von Dr. Edmund Weitz in die Hände gefallen, welches ich sehr hilfreich fand, um sich Suchmuster zu erarbeiten.
Trotzdem gab es hin und wieder ein paar Unstimmigkeiten oder Unterschiede bzgl. der Behandlung von regulären Ausdrücken in JavaScript und im RegEx Coach. Deshalb gib es hier ein ähnliches, wenn auch nicht so leistungsstarkes User Interface, mit dem man auf einfache Weise reguläre Ausdrücke auf einen String anwenden kann.
Fall Sie sich fragen, wozu man das braucht oder was reguläre Ausdrücke sind, dann möchte ich an dieser Stelle folgende Links anbieten, die einen guten Einstiegspunkt in das Thema bieten.
- Regulärer Ausdruck - Wikipedia [de]
- Core JavaScript 1.5 Reference:Global Objects:RegExp [en]
- Regular Expression Quick Start [en] und
Complete Regular Expression Tutorial [en]
Hinweis zur Benutzung
Dieses Tool stelle ich hier zur Verfügung "wie es ist". Ich habe mir die größte Mühe gegeben, dass das Tool erwartungsgemäß funktioniert. Trotzdem übernehme ich keine Garantie dafür, dass es das auch tut. (The program is provided 'as is' with no warranty - use at your own risk.)
Falls Sie Anregungen zum Tool haben oder einen Fehler entdecken, wenden Sie sich bitte an mich und senden mir eine E-Mail.
Teste RegExp "on the fly"
Beispiele für reguläre Ausdrücke
Prüfen auf syntaktisch korrekte E-Mail Adresse
^[a-zA-Z0-9][\w\.-]*@(?:[a-zA-Z0-9][a-zA-Z0-9_-]+\.)+[A-Z,a-z]{2,5}$
[testen]
Es handelt sich hier um einen Vorschlag, wie man relativ simple auf syntsktisch korrekte E-Mail Addressen prüfen kann.
Ich weise jedoch darauf hin, dass die Prüfung einer E-Mail-Adresse auf korrekte Syntax gemäß RFC819 mit einem einzelnen RegEx leider nicht möglich ist.
E-Mail Adressen wie Familie "Vorname \"VN\" Nachname"@domain.tld werden mit meinem Vorschlag als falsch evaluiert.
Auch lässt die deutsche Denic - für Vergabe der de-Adressen zuständig - keine Domainnamen mit weniger als 3 Zeichen oder solche, die nur aus Zahlen bestehen zu, diese sind jedoch zulässig.
Template basiertes Formatieren
%([^%]*)(TOKEN)(.*?)%
[testen]
Diese Regexp wurde von mir genutzt, um in Templates Ersetzungen vorzunehmen. Dabei sollten Adressdaten formatiert dargestellt werden. Im einfachsten Fall ist das PLZ ORT, STRAßE NUMMER, kann aber auch PLZ <b>ORT</b> (TEILORT), STRAßE NUMMER sein, wobei TEILORT optional ist.
Da ich die Formatierung von TEILORT nicht in die RegExp aufnehmen wollte, fiel mir diese Lösung ein. Somit ist man auch in der Lage, eine andere Darstellung auszugeben, z.B.: PLZ <i>ORT</i>-TEILORT, STRAßE NUMMER [testen]
Die Schwierigkeit bei dieser Lösung besteht darin, die richtigen %-Zeichen zu erwischen.
Somit muss man zum einen sicherstellen, dass zwischen Token und % kein anderes %-Zeichen vorkommt
%([^%]*)
.
Zum anderen muss man darauf achten, ein nicht gefräßiges (non-greedy)
Verhalten zu erreichen (.*?)%
.
Ersetzen mit Regulären Ausdrücken
(\w+)\s(\w+)
unter Verwendung von $2, $1
[testen]
Diese Regexp stammt aus der Core JavaScript 1.5 Reference und vertauscht Vor- und Nachname in diesem Beispiel.
RegEx Tester mit folgenden Browsern erfolgreich getestet
- Konqueror/3.4: Mozilla/5.0 (compatible; Konqueror/3.4; Linux; de) KHTML/3.4.0 (like Gecko)
- Firefox 1.5.0.6: Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
- Firefox/1.5.0.7: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
- MSIE 6.0, WinXP: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727
- Opera/9.01 (X11; Linux i686; U; en)