Regular Expression

klamm

Chef
Teammitglied
ID: 20876
L
20 April 2006
13.747
1.436
Hab grad ne Denkblockade ...
Such ne regexp (PHP) mit folgenden Bedingungen

erlaubt: A-Za-z0-9-._
mind 3 zeichen
mind 1 buchstabe
- _ . sind erlaubt aber keine 2 davon direkt hintereinander
beginn mit buchstabe oder zahl

PHP:
(  [A-Za-z0-9]+([\.\-_]?[A-Za-z0-9]+)* )* [A-Za-z]+ ([\.\-_]?[A-Za-z0-9]+)*
problem bereitet mir das "mind 1 buchstabe muss dabei sein"
könnt ich ja auch am ende extra testen aber das is lame
 
PHP:
([a-zA-Z] ( ( [._-] ([a-zA-Z0-9]+ [._-]? )+ ) | ( ( [a-zA-Z0-9] ( ( [._-] ([a-zA-Z0-9]+ [._-]? )* )  | (([a-zA-Z0-9]+ [._-]? )+) ) ) | 
([0-9]
   ( ( ( [._-]? ( [0-9]+ [._-]? )* ) [a-zA-Z] ( [._-]? ( [a-zA-Z0-9]+ [._-]?)* ) ) | 
   ( [a-zA-Z] ( ( [._-] ([a-zA-Z0-9]+ [._-]?)* ) | ( ( [a-zA-Z0-9]+ [._-]?)+ ) ) ) )

Habs nicht getestet, aber so in etwa könnte das funktionieren.

Ob das effizient ist ... keine Ahnung ;)
Muss der Pattern immer mit einem Buchstabe oder einer Zahl aufhören? Oder kann auch ein ._- am Ende stehen? (ersteres würde es einfacher machen)

(Punkt muss noch escaped werden)
 
Muss das wirklich alles in einen Ausdruck?
Ansonsten würd ich das aufteilen:
  1. Test auf erlaubte Zeichen und Mindestlänge #^[a-z0-9][a-z0-9\\._-]{3,}$#i
  2. Test auf Buchstabe #[a-z]#i
  3. Sonderzeichentest #[\\._-]{2,}#i