2010-07-31 12 views
7
function isUserID($username) { 
    if (preg_match('/^[a-z\d_]{2,20}$/i', $username)) { 
    return true; 
    } else { 
    return false; 
    } 
} 

Easy one .., tengo esto, ¿me puede explicar lo que comprueba? Sé que comprueba si el nombre de usuario tiene una longitud entre 2-20, ¿qué más? Graciaspreg_match() y nombre de usuario

Respuesta

26

Busca texto que contenga solo caracteres alfanuméricos y de subrayado, de 2 a 20 caracteres de longitud.

 
/^[a-z\d_]{2,20}$/i 
|||| | |||  ||| 
|||| | |||  ||i : case insensitive 
|||| | |||  |/ : end of regex 
|||| | |||  $ : end of text 
|||| | ||{2,20} : repeated 2 to 20 times 
|||| | |] : end character group 
|||| | _ : underscore 
|||| \d : any digit 
|||a-z: 'a' through 'z' 
||[ : start character group 
|^ : beginning of text 
/: regex start 
+0

Si quieres array_reverse (your_code_lines) debería ser más fácil de leer. La última línea sería la solución, pero las instrucciones serán de izquierda a derecha de arriba a abajo;). Ah, solo una pequeña broma, +1. –

+0

¡Gran respuesta! ¡Gracias! – zur4ik

0

También se comprueba si contiene caracteres que no sean el alfabeto, a-z y A-Z, los dígitos 0-9 y _.

O podría decir, comprobando que solo contenga caracteres alfanuméricos y _.

Esto podría reescribirse para que sea más simple, también - preg_match devuelve un int, por lo que no hay ninguna razón para usar el patrón 'return false, return true'.

function isUserID($username){ return (bool)preg_match('/^[a-z\d_]{2,20}$/i', $username); } 

Haría lo mismo.

Además, \w significa lo mismo que esos caracteres. Letras, dígitos y guión bajo. Por lo tanto aún mejor sería

function isUserID($username){ return (bool)preg_match('/^[\w]{2,20}$/i', $username); } 
+1

diría que comprueba que sólo contiene caracteres alfanuméricos ** ** y inglés _. Puede ser relevante ya que el OP dice que es sueco. – Artefacto

+0

@Artefacto: Diría ** caracteres ASCII **. El inglés usa letras acentuadas cada vez que lo desee, y muchos otros idiomas usan los caracteres ASCII. –

1

Se comprueba que el nombre de usuario se compone de 2 a 20 caracteres que son letras (mayúsculas o minúsculas gracias a la bandera i), números o un guión bajo.

Esto se puede abreviar de dos maneras: en primer lugar, la construcción if es innecesaria. En segundo lugar, puede utilizar \w como un sustituto de esos mismos caracteres, por lo que:

function isUserID($username) { 
    return preg_match('/^\w{2,20}$/', $username); 
} 
0

Se comprueba literalmente si $username consiste en una secuencia de 2 a 20 caracteres de a - z, A - Z (debido a la i indicador de insensibilidad de mayúsculas y minúsculas), 0 - 9 (para \d) y _.

2
/^[a-z\d_]{2,20}$/i 

empalme hacia arriba:

/ es el delimitador de expresiones regulares; puedes elegir lo que quieras, pero una barra inclinada es la más común.

^ significa 'coinciden con el comienzo de la entrada': La expresión siguiente debe estar al principio para que la expresión regular coincida.

[a-z\d_] es una clase de caracteres; significa "cualquiera de los caracteres entre los corchetes"; la barra invertida combinada con la d es un atajo para 'dígitos', y el guión indica un rango inclusivo; por lo tanto, la clase de caracteres dice 'cualquier letra o dígito, o el guión bajo'.

{2;20} es un cuantificador que dice que la expresión anterior (la clase de caracteres) se debe repetir de 2 a 20 veces.

$ significa 'coincidencia de entrada', similar a ^.

Otro / termina la expresión regular; lo que sigue son opciones de procesión, en este caso i, que significa "insensible a mayúsculas y minúsculas".

0

Se está comprobando durante 2-20 caracteres alfanuméricos palabra entre mayúsculas y minúsculas que consta de letras, números y _

Cuestiones relacionadas