2010-03-31 17 views
8

Sto controllando un campo se si tratta di caratteri latini o meno.Quale espressione regolare devo controllare per alcuni caratteri non latini?

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

Questo funziona bene, ma vorrei cambiarlo in modo che quando entro in caratteri non latini, come ad esempio caratteri cinesi, insieme a uno spazio (che è all'interno di tale intervallo sto usando al momento) lo farà Dì ancora che sono personaggi non latini.

Come posso modificare l'espressione regolare che devo fare?

risposta

9

prova Proprio per la presenza di caratteri non ASCII, invece di test per la presenza di caratteri 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

Questa è una buona idea! Grazie! Ricevo questo errore quando provo a usare la regex in php: Compilazione fallita: PCRE non supporta \ L, \ l, \ N, \ U o \ u all'offset 2 – zeckdude

+1

Sintassi differente in PHP: Prova '/ [ \ x {0000} - \ x {007f}]/u' –

+0

@Tim - Grazie mille! – zeckdude

4

Se si desidera controllare l'intero utilizzo della stringa (in php)

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