2009-07-04 21 views
6

Necesito una expresión regular que también coincida con letras chinas, griegas, rusas, ... Lo que básicamente quiero hacer es eliminar la puntuación y los números.RegEx para todas las letras (incluidos chino, griego, etc.)

Hasta ahora eliminé la puntuación y los números "manualmente", pero eso no parece ser muy consistente.

Otra cosa que he intentado es

/[\p{L}]/ 

pero que no es compatible con Mozilla (yo uso esto en una extensión de Firefox).

+0

¿Es necesario simplemente igualar las letras de acuerdo al idioma del usuario en particular (que simplemente significa que necesita un motor de expresiones regulares conscientes local) o necesita para que coincida con cualquier cosa que es una carta en cualquier idioma posible? – balpha

+2

¿Y qué puntuación necesitas eliminar? ¿Necesita quitar el apóstrofo en O'Brien? –

+0

'[\ p {P} \ p {N}]' describe la puntuación y los números. – Gumbo

Respuesta

4

¿Le has dado XRegExp y Unicode plugin una prueba/look?

<script src="xregexp.js"></script> 
<script src="xregexp-unicode.js"></script> 
<script> 
    var unicodeWord = XRegExp("^\\p{L}+$"); 
    alert(unicodeWord.test("Ниндзя")); // -> true 
</script> 
+1

Gracias, eso es exactamente lo que estaba buscando. Sin embargo, realmente no quiero incluir una biblioteca de 8 kb que solo uso una vez en mi extensión. Los rangos Unicode en el complemento Unicode son muy útiles y creo que los usaré para escribir algo yo mismo. – slosd

1

Puede encontrar muchas quejas sobre las especificaciones actuales de ECMA en expresiones regulares que no tratan con caracteres Unicode de la manera que deberían. P.ej. un blog entry by Scott Hanselman que enlaza con una pregunta ASÍ ;-)
Todavía no hay una solución "real" a este problema, pero eche un vistazo a las respuestas de Javascript + Unicode regexes (su pregunta es más o menos un duplicado de esto) (editar: I toma eso de vuelta, el plugin Unicode Jonathan Lonowski sugiere que se vea muy bien)

Cuestiones relacionadas