2009-07-08 8 views
1

Was RegularExpressionValidator.ValidationExpression sollte ich verwenden, um nur ICQ UIN wie Eingabe zuzulassen?RegEx für ICQ UIN

xxx-xxx-xxx and xxx-xxx-xx and xx-xxx-xxx and xxxxxxxxx so on.. 

mit Strich als Trennzeichen und ohne.

Antwort

4

Sie können den folgenden einfachen Ausdruck verwenden.

^([0-9]-?){7,8}[0-9]$ 

Der Nachteil ist, dass es Dinge wie 1-2-3-4-5-6-7-8 erlaubt. Wenn Sie das Layout mehr einschränken möchten, können Sie komplexere Ausdrücke verwenden.

^(?=([0-9]-?){8,9})([0-9]{2,3}-?)*(?<!-)$ 

Dieser Ausdruck behauptet, dass die Zeichenfolge enthält genau acht oder neun Zahlen und einige Striche den positiven Vorgriff Behauptung mit (?=([0-9]-?){8}). Dann stimmt es mit Gruppen von zwei oder drei Zahlen überein, die optional durch Bindestriche getrennt sind, und bestätigt schließlich, dass die Zeichenfolge nicht mit einem Bindestrich endet, der das negative Aussehen hinter der Behauptung (?<!-) verwendet.

Dies erlaubt immer noch einige unregelmäßige Muster wie 12-34567-89. Wenn Sie sie ebenfalls löschen möchten, müssen Sie alle zulässigen Muster auflisten. Aber ich schlage vor, dies nicht zu tun, sondern so viel Flexibilität wie möglich zu erlauben - ich würde jeden String mit acht oder neun Zahlen und einer beliebigen Anzahl von Bindestrichen - sogar --123---4-5-67--8 zulassen und dann die Benutzereingabe in einem vordefinierten Format reformieren.

^(-*[0-9]-*){8,9}$ 
+2

Einige Kommentare: (1) Als ich ICQ verwendete, hatte ich eine 6-stellige Nummer; (2) Ich denke, ICQ-Nummern können nicht mit 0 beginnen; (3) Ignoriere einfach die Bindestriche ist eine nette Politik IMHO: '^ - * [1-9] [0-9 -] * $' wäre genug ... – Massa

+2

Massa, du verschenkst dein Internetzeitalter damit ... Mein ICQ hat auch eine 6-stellige Nummer und ich bin vor 11 oder 12 Jahren beigetreten. –