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:
- 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
- El
+
es un multiplicador; {1,8}
es uno también, pero solo se puede usar un multiplicador después de una expresión
- 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 ;-)