2012-05-24 3 views
0

J'ai une requête de base de données basée sur l'entrée de l'utilisateur, Cependant, si l'utilisateur entre une lettre commune dans la recherche, l'application va planter. mais comme la recherche prend également en charge les caractères chinois, je ne peux pas simplement bloquer toutes les recherches d'un caractère.Expressions régulières et chinois

Comment est-ce que j'écrirais une expression régulière pour vérifier un caractère anglais simple mais n'inclurai pas un seul caractère chinois? "^ (a-zA-Z) {1} $" "^ \ w {1} $" Est-ce que ceux-ci comprennent uniquement des lettres anglaises?

Je pense à l'aide de l'expression régulière comme celui-ci, mais de meilleures solutions serait appréciée:

if(input.matches("^(a-zA-Z){1}$") 
{ 
    //Show error 
} 
else 
{ 
//do query 
} 
+3

uhmmm puis-je suggérer de ne pas pirater dans un travail autour. réparer le problème "mon application va planter"? –

+0

@jb "mais de meilleures solutions seraient appréciées" – Chimeara

+0

Oui, je devrais changer la requête de base de données pour avoir une limite 'LIMIT 50', ce qui corrigerait le problème de plantage, mais je voudrais aussi utiliser l'expression régulière pour montrer un message à l'utilisateur au lieu d'eux en supposant que les données n'existent pas. – Chimeara

Répondre

1

Vous devriez certainement corriger les accidents en premier. Pour distinguer les caractères anglais et chinois (CJK), vous pouvez utiliser des classes de caractères telles que \p{ASCII}, \p{Alpha} pour ASCII et \p{InCJKUnifiedIdeographs} pour les caractères CJK.