2010-09-24 15 views
6

Ich habe E-Mail-Feld in meiner Seite, die ich validieren mit regulären Ausdruck Validator mein asp.net zur Verfügung gestellt. Ich bin mit gleichem Validierungs Ausdruck wie zusammen mit Validator gegeben für E-Mails, dhRegulärer Ausdruck Validator erlaubt nicht-Englisch Zeichen für w

Validation = "\ w + ([-. + '] \ W +) @ \ w + ([-.] \ W +). \ w + ([-.] \ w +) *“

Es funktioniert gut, aber Problem kommt, wenn ich zu geben versuchte, nicht-Englisch Buchstaben zB

è é ü û ă usw.

Aber mein Problem ist, wenn ich denselben Ausdruck verwenden in JavaScript diese Zeichen erlaubt, auch auf Serverseite auch denselben Ausdruck diese Zeichen erlaubt.

Ich denke '\ w' erlaubt alle alphanumerischen Zeichen sowie nicht englische Zeichen aber Ich weiß nicht, warum es nicht erlaubt, wenn es in Validator verwendet wird.

Bitte schlagen Sie vor, wenn ich etwas falsch gemacht habe.

Antwort

1

Dies ist eine Einschränkung des ECMAScript-Standards; f. in .NET \w entspricht auch nicht-englischen Zeichen.

Die einfachste Lösung besteht darin, die clientseitige Validierung bei der Arbeit mit ASP.NET zu deaktivieren. Daher validiert der serverseitige Validierer (der die .NET-Implementierung verwendet) entsprechend.


var r = new Regex(@"\w"); 
foreach(var m in r.Matches("è é ü û a")) 
     Console.WriteLine(m); 

Output: 
è 
é 
ü 
û 
a 
+0

Hallo Jan, Danke für die Antwort. Das bedeutet, dass ich nicht-englische Zeichen mit Validator validieren kann. Ich kann jetzt kein clientseitiges Skript in meine Anwendung aufnehmen. Gibt es einen anderen Weg, den ich nur mit validatos validieren kann? – Rahul

2

\w bedeutet Wortzeichen. Und die Definition eines Wortzeichens kann sich von Implementierung zu Implementierung unterscheiden. Einige verwenden nur [A-Za-z0-9_], andere enthalten auch Nicht-US-ASCII-Zeichen (siehe "nur ASCII" in comparison of regular expression flavors).

Wenn Sie sicherstellen möchten, dass die gleichen Zeichen vorhanden sind, können sie explizit wie [A-Za-z0-9_èéüûă].

+0

Vielen Dank für Ihre schnelle Antwort Gumbo. aber es ist sehr schwierig, die vollständige Liste der Charaktere zu bekommen. – Rahul

+1

@Rahul: Moderne Regular Expression Libraries unterstützen oft verschiedene vordefinierte Zeichenklassen, wie '\ w' vordefiniert ist. Einige haben sogar eine Unterstützung durch [Beschreibung der Zeichen durch ihre Unicode-Zeicheneigenschaften] (http://www.regular-expressions.info/unicode.html). – Gumbo

1

Es ist ein bekanntes Problem: ASP.Net regulären Ausdruck clientseitige Validator Buggy für nicht-englische Zeichen ist. Sie können entweder die serverseitige Validierung verwenden (wenn es sich um eine Option handelt) oder Ihren eigenen clientseitigen CustomValidator schreiben.

+0

Danke für die Antworten, es verdeutlicht die Situation. – Rahul

Verwandte Themen