10
votes

Quelle expression régulière dois-je vérifier pour certains caractères non latins?

Je vérifie un champ s'il s'agit de caractères latins ou non.

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");    
}


0 commentaires

3 Réponses :


15
votes

Il suffit de tester 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");    
}


3 commentaires

C'est une bonne idée! Merci! Je reçois cette erreur lorsque vous essayez d'utiliser cette regex dans PHP: la compilation a échoué: PCRE ne prend pas en charge \ l, \ l, \ n, \ u ou \ u à offset 2


Différente syntaxe dans PHP: essayez / [\ x {{{{{{{{{{{{{{{{{{007f}] / u


Il dit que l'allemand prüfung est des caractères non latins



4
votes

Si vous souhaitez vérifier l'utilisation de la chaîne entière (en PHP)

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


0 commentaires

1
votes

Une alternative à la création de votre propre regex avec des plages de points de code est d'utiliser le bibliothèque XREGEXP

Quelques exemples de la documentation: P>

XRegExp('^\\p{Hiragana}+$').test('ひらがな'); // -> true
XRegExp('^[\\p{Latin}\\p{Common}]+$').test('Über Café.'); // -> true


0 commentaires