2010-03-31 7 views
8

Je vérifie un champ s'il s'agit de caractères latins ou non.Quelle expression régulière dois-je vérifier pour certains caractères non latins?

var foreignCharacters = $("#foreign_characters").val(); 
var rlatins = /[\u0000-\u007f]/; 

if (rlatins.test(foreignCharacters)) { 
    alert("This is Latin Characters"); 
} else { 
    alert("This is non-latin Characters");  
} 

Cela fonctionne bien, mais je voudrais le changer quand j'entrer des caractères non latins, tels que les caractères chinois, ainsi que d'un espace (qui est dans cette plage, je suis actuellement en utilisant), il toujours dire que ce sont des caractères non latins.

Comment est-ce que je peux changer l'expression régulière que je dois faire cela?

Répondre

9

Tout test pour la présence de caractères non-ascii au lieu de tester la présence de caractères ascii:

var foreignCharacters = $("#foreign_characters").val(); 
var rforeign = /[^\u0000-\u007f]/; 

if (rforeign.test(foreignCharacters)) { 
    alert("This is non-Latin Characters"); 
} else { 
    alert("This is Latin Characters");  
} 
+0

C'est une bonne idée! Merci! J'obtiens cette erreur en essayant d'utiliser cette regex dans php: Echec de la compilation: PCRE ne supporte pas \ L, \ I, \ N, \ U, ou \ u au décalage 2 – zeckdude

+1

Syntaxe différente dans PHP: Essayez '/ [ \ x {0000} - \ x {007f}]/u' –

+0

@Tim - Merci beaucoup! – zeckdude

4

Si vous voulez vérifier l'ensemble de l'utilisation de la chaîne (en php)

preg_match('/^[\x{0000}-\x{007F}]*$/u',$s); 
Questions connexes