2012-06-12 47 views

Respuesta

10

Estás muy cerca de hecho:

if(preg_match('/^user[0-9]{1,8}$/', $string)){ 

El ancla para "debe coincidir al inicio de la cadena" debe ser todo el camino por delante, seguido por el "usuario" literal; a continuación, especifique el juego de caracteres [0-9] y el multiplicador {1,8}. Finalmente, termina con el ancla "debe coincidir al final de la secuencia".

algunos comentarios sobre su expresión original:

  1. El ^ coincide con el inicio de una cadena, por lo que escribir en cualquier otro lugar dentro de esta expresión, pero el principio no se obtendrán los resultados esperados
  2. El + es un multiplicador; {1,8} es uno también, pero solo se puede usar un multiplicador después de una expresión
  3. A menos que tenga la intención de usar los números que encontró en la expresión, no necesita paréntesis.

Por cierto, en lugar de [0-9] también puedes usar \d. Es un grupo de carácter automático que reduce la expresión regular, aunque éste en particular no guarda demasiados caracteres ;-)

2

estaban cerca, aquí está su expresión regular: /^user[0-9]{1,8}$/

1

tratar la siguiente expresión regular en su lugar:

/^user([0-9]{1,8})$/

1

Utilice esta expresión regular:

/^user\d{1,8}$/ 
3

mediante el uso ^ y $, solo está coincidiendo cuando el patrón es lo único en la línea. ¿Es eso lo que quieres? Si es así, utilice la siguiente:

preg_match('/^user[0-9]{1,8}[^0-9]$/' , $string); 

Si usted quiere encontrar este patrón en cualquier parte de una línea, me gustaría probar:

preg_match('/user[0-9]{1,8}[^0-9]/' , $string); 

Como siempre, se debe utilizar una herramienta de referencia como RegexPal hacer su prueba de expresión regular de forma aislada.

Cuestiones relacionadas