2010-03-31 20 views
8

Estoy revisando un campo si son caracteres latinos o no.¿Qué expresión regular necesito verificar para algunos caracteres no latinos?

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

Esto funciona bien, pero me gustaría cambiarlo por lo que cuando entro todos los caracteres no latinos, como los caracteres chinos, junto con un espacio (que es dentro de ese rango que estoy utilizando actualmente) lo hará Todavía digo que es caracteres no latinos.

¿Cómo puedo cambiar la expresión regular que tengo que hacer eso?

Respuesta

9

prueba Sólo por la presencia de caracteres no ASCII en lugar de analizar la presencia de caracteres 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

¡Es una buena idea! ¡Gracias! Recibo este error al intentar usar esa expresión regular en php: Compilación fallida: PCRE no admite \ L, \ l, \ N, \ U o \ u en el desplazamiento 2 – zeckdude

+1

Sintaxis diferente en PHP: Pruebe '/ [ \ x {0000} - \ x {007f}]/u' –

+0

@Tim - ¡Muchas gracias! – zeckdude

4

Si desea comprobar todo el uso de cuerdas (en php)

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