2009-11-16 19 views
6

Puede alguien decirme lo que la sintaxis de una expresión regular sería que sólo permitiría a los siguientes caracteres:Regex para a-z, 0-9,. y -

  • az (sólo minúsculas)
  • 0-9
  • período, guiones, subrayado

Además, la cadena debe comenzar con una letra minúscula (az) y no puede contener espacios u otros caracteres que no sean los enumerados anteriormente.

Gracias de antemano por la ayuda, Justin

Respuesta

10

que puede hacer: "^[a-z][-a-z0-9\._]*$"

Aquí está el desglose

  • ^ principio de la línea
  • [a-z] clase de caracteres para los valores más bajos , para que coincida con la primera letra
  • [-a-z0-9\._] clase de caracteres para el resto del valor requerido
  • * cero o más para la última clase
  • $ final de la cadena
+0

esto está mal. no coincidirá con el guión, en su lugar tiene un rango de punto a guión bajo. –

+0

Cuando uso esta expresión regular con la siguiente cadena: "prueba", aparece este error: "preg_match() [function.preg-match]: Ningún delimitador final '^' found" ¿Alguna idea de lo que esto significa? – Justin

+0

'*' es cero o más repeticiones, no una o más. –

0
^[a-z][a-z0-9._\s-]* 
+1

esto está mal. no coincidirá con el guión, que debe ser el primero o el último de la clase para tomarse literalmente. –

+0

arreglado, gracias por notar – Dmitry

2
[-._a-z0-9] 

o

[-.[:lower:][:digit:]] 

o ...

depende de que versión de expresiones regulares que usted apunta.

+0

Voy a usar esto con preg_match en php. – Justin

+0

entonces es /^[a-z][-._a-z0-9]*$/ –