2012-07-28 22 views
5

Quiero hacer algunas pruebas de cadena básicas en Node.js. Supongamos que tengo un formulario donde los usuarios ingresan su nombre y quiero verificar si solo es basura o un nombre real.RegEx con alfabeto latino extendido (ä ö ü ß)

Felizmente (o por desgracia para mi control) obtengo usuarios de todo el mundo, lo que significa que sus nombres contienen caracteres no ingleses, como ä ö ü ß é. Solía ​​usar /[A-Za-z -]{2,}/ pero esto no coincide con nombres como "Jan Buschtöns".

¿Tengo que agregar manualmente todos los posibles caracteres no ingleses pero latinos a mi RegEx para que funcionen? No quiero un RegEx de más de 100 caracteres como /[A-Za-z -äöüÄÖÜßéÉèÈêÊ...]{2,}/.

+0

Trucos como '/ \ w + /' no funcionan. Solo coinciden con los personajes ingleses. – buschtoens

+2

¿Y qué pasa si obtienes a alguien con un nombre Salish? Los [idiomas Salish] (http://en.wikipedia.org/wiki/Salishan_languages) usan '7' como una letra, por ejemplo," Sḵwxwú7mesh "; y en una nota menos oscura, ¿qué hay de coreano, japonés, chino, ...? Quizás quiera leer [Los programadores de Falsehoods creen en los nombres] (http://www.kalzumeus.com/2010/06/17/falsehoods-programmers- creer-sobre-nombres /) también. Básicamente sugiero que no te molestes en absoluto con tu cuenta corriente. –

+0

Ya pensé en los idiomas asiáticos y cirílicos. Tienen equivalentes latinos que pueden usar. Y ... Salish es un caso muy raro. : D – buschtoens

Respuesta

4

Comprobar http://www.regular-expressions.info/unicode.html y http://xregexp.com/plugins/

Usted tendría que utilizar \p{L} para que coincida con cualquier carácter carta si desea incluir Unicode.

Hablando unicode, alternativa de \w es [\p{L}\p{N}_] entonces.

+0

creo que necesita un ['plugin'] (http://xregexp.com/plugins/) para hacer esto en js –

+0

@MrAnderson, no un complemento de navegador, solo una lib de JavaScript. silvinci está utilizando Node.js, y es muy fácil importar XRegExp como un módulo. – slevithan

+0

Haz una búsqueda de "clases de caracteres POSIX". Las expresiones regulares de JavaScript las admiten, y generalmente pueden (al menos para los lenguajes humanos más comunes) responder preguntas como "¿es una carta?" O "¿es una letra mayúscula?". – ebohlman

Cuestiones relacionadas