2010-09-24 6 views
6

J'ai un champ email dans ma page, que je valide à l'aide du validateur d'expressions régulières fourni par asp.net. J'utilise même l'expression de validation comme indiqué avec validateur des e-mails à savoirLe validateur d'expressions régulières n'autorise pas les caractères non-anglais pour w

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

Cela fonctionne très bien mais le problème vient quand j'ai essayé de donner des lettres non anglaises par exemple

è é ü ua etc.

Mais mon problème est, quand je l'utilise même l'expression en javascript, il permet à ces personnages, même à côté serveur également même expression permet à ces personnages.

Je pense que '\ w' permet tous les caractères alphanumériques ainsi que les caractères non anglais, mais Je ne sais pas pourquoi il ne permet pas de l'utiliser dans le validateur.

S'il vous plaît me suggérer si j'ai fait quelque chose de mal.

Répondre

1

Ceci est une limitation de la norme ECMAScript; f.e. dans .NET \w correspond également aux caractères non anglais. La solution la plus simple consiste à désactiver la validation côté client lorsque vous travaillez avec ASP.NET, de sorte que le validateur côté serveur (qui utilise l'implémentation .NET) validera en conséquence.


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

Output: 
è 
é 
ü 
û 
a 
+0

Bonjour Jan, Merci pour la réponse. Cela signifie que je ne peux pas valider les caractères non-anglais en utilisant le validateur. Je ne peux pas inclure le script côté client maintenant dans mon application. Y a-t-il un autre moyen pour que je puisse valider par validatos seulement? – Rahul

2

\w signifie un caractère de mot. Et la définition d'un caractère de mot peut différer de la mise en œuvre à la mise en œuvre. Certains utilisent uniquement [A-Za-z0-9_] tandis que d'autres incluent également des caractères non-US-ASCII (voir "ascii-only" dans comparison of regular expression flavors).

Si vous voulez vous assurer que les mêmes caractères sont utilisés, énumérez-les explicitement comme [A-Za-z0-9_èéüûă].

+0

Merci Gumbo pour votre réponse rapide. mais c'est très difficile d'obtenir la liste complète des caractères. – Rahul

+1

@Rahul: Les bibliothèques d'expressions régulières modernes supportent souvent différentes classes de caractères prédéfinies comme '\ w' est prédéfinie. Certains ont même un support en [décrivant les caractères par leurs propriétés de caractères Unicode] (http://www.regular-expressions.info/unicode.html). – Gumbo

1

C'est un problème connu: le validateur côté client ASP.Net d'expression régulière est bogué pour les caractères non-anglais. Vous pouvez utiliser la validation côté serveur (si c'est une option) ou écrire votre propre CustomValidator côté client.

+0

Merci pour les réponses, cela clarifie la situation. – Rahul