2010-11-13 41 views
5

Estoy tratando de encontrar la forma de configurar una expresión regex para cumplir los siguientes requisitos.regex para nombres de usuario

  • deben consistir al menos dos caracteres que son caracteres alfabéticos a-zA-Z
  • debe consistir solamente UNA de subrayado o guión permitido en cualquier lugar después de la primera comprobación, el tablero/de subrayado no puede estar en el extremo como el mismo regla para aplicar como primer paso
  • Debe haber caracteres alfanuméricos.

Básicamente, un buen ejemplo es

Los nombres de usuario Aceptable

  • myusername_09
  • nombre de usuario-09
  • BW-09

nombres de usuario inaceptables

  • BW 09
  • BW - 09
  • bw_-09
  • username__09

Si cualquier ayuda sería apreciar, esto es lo que tenía, pero no su trabajo para mí como lo que quiero es ser.

^(?=[A-Za-z0-9])(?!.*[_-]{2})[A-Za-z0-9_-]+$ 
+1

FYI: "regex" es una contracción de "expresión regular" por lo que "expresión de expresiones regulares", para mí, suena algo gracioso. –

+0

Gracias Campbell, por arreglar mi etiqueta. Todavía soy nuevo en todo este desbordamiento de pila como miembro. Sobre todo vino por respuestas que ya nos han preguntado. Pero esta vez no pude obtener lo que quería por respuestas. – Benjamin

+0

@Sean: programo en C# y estoy acostumbrado a "Regex" jeje, pero sí lo sabía. Gracias aunque solo en caso de que no lo hice/ – Benjamin

Respuesta

7

Si entiendo correctamente sus necesidades, sólo tiene que validar que el nombre de usuario es correcta? Si es así, que haría uso de esta expresión regular:

^[A-Za-z]{2,}[_-]?[A-Za-z0-9]{2,}$ 

Usted no dijo cuántos caracteres se necesitaría después del guión o un guión; mi ejemplo requiere al menos 2 más después. Puede ser alterado según sea necesario.

EDITAR: He agregado ? después del [_-] para que sea opcional, de acuerdo con su comentario a continuación.


alguna información adicional sobre los cuantificadores:

  • {N,} significa que debe ser al menos N caracteres desde el punto anterior para que coincida.
  • {N} significa que debe haber exactamente N de lo anterior.
  • {N,M} significa que debe haber al menos N, pero no más de M.
  • ? significa que debe haber 0 o 1 de la anterior.
  • + significa que debe haber 1 o más.
  • * significa que debe haber 0 o más.
+0

Gracias, eso conduce a una respuesta un tanto. Me disculpo por no haber dicho cuántos personajes. De hecho, estoy usando ASP.NET MVC, así que tengo un atributo que define la cantidad mínima y máxima de caracteres como una validación. Una cosa que me olvidé mencionar es que el subrayado/guión no es obligatorio, puede aceptar nombres de usuario típicos como bw09 o username09 o incluso nombres de usuario de plan como 'myusername'. – Benjamin

+0

Gotcha; He editado la respuesta para que el _ o - sea opcional. Tenga en cuenta también que tal como es, esta expresión regular requiere al menos un nombre de usuario de 4 caracteres, sin contar el guión/guión bajo, y los dos primeros no pueden ser números. Tampoco verifica la longitud total máxima. La adición del signo de interrogación debería manejar lo que necesita. –

+0

^[A-Za-z] {4,} [-_]? [A-Za-z0-9] + $ es lo que terminé con los que querían saber. Muchas gracias Andrew por tu ayuda. – Benjamin