RegEx für die Freigabe von alphanumerischen Zeichen beim Start und Bindestrich danach

8

Ich hatte eine Anforderung wo in dem Textfeld das erste Zeichen ein alphanumerisches sein sollte und dann kann ich einen Bindestrich danach in JavaScript zulassen. Auch Bindestrich sollte am Ende nicht erlaubt sein

    
GustyWind 20.01.2009, 07:55
quelle

4 Antworten

12

Wenn Sie mehrere Bindestriche nicht hintereinander abgleichen möchten:

%Vor%

Dies entspricht: a , a-a , aaa-a , aaa-a-aaa-a-aaa-a usw. Aber nicht: - , -a , a- , a--a , a-a-a- , a-a--a usw.

    
wvanbergen 20.01.2009, 08:00
quelle
8
%Vor%     
Jon Skeet 20.01.2009 07:57
quelle
5

Hier ist die POSIX + look-akead-Variante:

%Vor%

Dies erlaubt auch nur ein Zeichen als Übereinstimmung. Es ist jedoch nicht so gut lesbar. ; -)

Beachten Sie, dass [[:alnum:]] eine vordefinierte Zeichenklasse ist, die [a-zA-Z0-9] entspricht und effizienter ist, aber ansonsten austauschbar ist. Nicht jeder Regex-Flavour kennt diese POSIX-Klassen, verwenden Sie die traditionelle Form, wenn Sie möchten.

Hier ist einer, der mehrere aufeinanderfolgende Bindestriche nicht erlaubt, und er ist kürzer:

%Vor%

und seine Nicht-POSIX-Form:

%Vor%     
Tomalak 20.01.2009 08:16
quelle
5

Ich würde vorschlagen:

%Vor%

Dies entspricht auch Strings der Länge 1.

    
Gumbo 20.01.2009 09:14
quelle

Tags und Links