2010-07-02 17 views
5

Quiero escribir una expresión regular para la validación del nombre. La expresión regular debe incluir todos los alfabetos (caracteres latinos/franceses/alemanes, etc.). Sin embargo, quiero excluir números de él y también permitir -. Básicamente es \w (menos) números (más) -.Regex en rieles para que coincida con [ w] y "-" pero no con los números

Por favor ayuda.

+0

También pruebe http://rubular.com el mejor recurso para probar sus expresiones regulares de ruby. –

Respuesta

5

Por lo que yo sé, Ruby no admite propiedades Unicode (al menos hasta la versión 1.8), por lo que puede que tenga que utilizar

^(?:[^\W\d_]|-)+$ 

Explicación: [^\W\d_] partidos cualquier letra (literalmente significa "Partido un personaje que no es un carácter no alfanumérico, un dígito o un guión bajo "). En este caso, un doble negativo es lo correcto para usar. Como estamos utilizando una clase de caracteres negada, debemos permitir el - por alternancia.

Advertencia: De regular-expressions.info se ve como Ruby sólo coincide con caracteres ASCII con el \w taquigrafía, por lo que esta expresión regular podría no funcionar como se pretende. No tengo instalado Ruby aquí, pero en rubular.com esta expresión regular funciona correctamente.

La solución alternativa

^[[:alpha:]-]+$ 

debe coincidir con caracteres no ASCII de acuerdo con regular-expressions.info y RegexBuddy, pero en rubular.com que no está funcionando.

+0

¿Tal vez porque no es específico de rubí? –

+0

@Shripad K: ¿Qué quieres decir? –

0

Si desea una solución específica de rubí a su problema de validación entonces usted puede utilizar esto:

^[\D-]+$ 

Esto se puede comprobar enlace permanente aquí:

http://rubular.com/r/VrAIB4TkwJ

he hecho de esto una comunidad wiki para que todos puedan probarlo y mejorar la expresión regular si es necesario.

Espero que esto ayude. Saludos :)

+0

No realmente. Esto coincide con todos los dígitos, incluidas cadenas como '!" § $% & '- no lo que Dinesh necesita. –

Cuestiones relacionadas