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.
También pruebe http://rubular.com el mejor recurso para probar sus expresiones regulares de ruby. –