2010-03-31 12 views
8

Sprawdzam pole, jeśli jest to znak łaciński lub nie.Jakiego wyrażenia regularnego potrzebuję do sprawdzenia niektórych znaków innych niż łacińskie?

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

Działa to dobrze, ale chciałbym zmienić go tak, kiedy wprowadzać żadnych znaków spoza alfabetu łacińskiego, takie jak chińskich znaków, wraz z przestrzenią (która jest w tym przedziale używam obecnie) to będzie nadal twierdzą, że są to postacie inne niż łacińskie.

Jak zmienić wyrażenie regularne, które muszę to zrobić?

Odpowiedz

9

Tylko testy na obecność znaków spoza ASCII zamiast testów na obecność znaków 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

To jest dobry pomysł! Dzięki! Otrzymuję ten błąd podczas próby użycia tego wyrażenia regularnego w php: Kompilacja nie powiodła się: PCRE nie obsługuje \ L, \ l, \ N, \ U lub \ u offset 2 – zeckdude

+1

Różne składni w PHP: Spróbuj '/ [ \ x {0000} - \ x {007f}]/u' –

+0

@Tim - Dziękuję bardzo! – zeckdude

4

Jeśli chcesz sprawdzić całą użycie string (w php)

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