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

쉬운 답변 ..이 질문이 무엇인지 설명해 주시겠습니까? 사용자 이름의 길이가 2-20 사이인지 확인하면 더 알아볼 수 있습니까? 감사합니다preg_match() 및 사용자 이름

답변

26

영숫자와 밑줄 문자 만 포함 된 텍스트를 검색합니다. 길이는 2 ~ 20 자입니다.

 
/^[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

array_reverse (your_code_lines)를 읽는 것이 더 읽기 쉬워야합니다. 마지막 줄은 해결책이 될 것이나 지시 사항은 위에서 아래로 왼쪽에서 오른쪽으로 나타납니다. 아, 농담, +1. –

+0

좋은 답변입니다! 감사! – zur4ik

0

알파벳, a-z 및 A-Z, 0-9 및 _ 이외의 문자가 포함되어 있는지 또한 확인하고 있습니다.

또는 영숫자와 _ 만 포함되어 있는지 확인할 수 있습니다.

이것은 더 간단하게 다시 작성할 수 있습니다. preg_match는 int를 반환하므로 'return false, return true'패턴을 사용할 이유가 없습니다.

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

같은 일을합니다.

또한 \w은 해당 문자와 ​​동일한 의미입니다. 문자, 숫자 및 밑줄. 그래서 더 나은는

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

나는 그것이 단지 ** 영어 ** 영숫자가 포함되어 확인 말하고 싶지만 _ 2-20 문자 문자, 숫자로 구성 긴 대소 문자를 구분하지 알파벳 단어를 확인하고있다 _. OP가 그가 스웨덴 인이라고 주장한 이후로 관련성이있을 수 있습니다. – Artefacto

+0

@Artefacto : ** ASCII ** 문자를 사용합니다. 영어는 악센트가있는 문자를 사용할 때마다 사용하며 많은 다른 언어가 ASCII 문자를 사용합니다. –

1

그것은 사용자 이름이 글자합니다 (i 플래그 대문자 또는 소문자 감사)이다 2 ~ 20 문자로 구성되어 있는지 확인, 숫자 또는 밑줄이 될 것입니다.

두 가지 방법으로 줄여 쓸 수 있습니다. 첫째, if 구조는 필요하지 않습니다. 둘째, 당신은 그래서, 그 같은 문자 대용으로 \w를 사용할 수 있습니다

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

를 그것은 문자 그대로 확인 $usernamea의 2 ~ 20 문자의 순서로 구성되어있는 경우 - 때문에 Z (- z, A 대문자, 소문자의 경우는 플래그), 0 - 9 (\d의 경우) 및 _입니다.

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

접합 그것을 :

/는 정규식 구분 기호; 당신은 당신이 좋아하는 것을 선택할 수 있지만, 가장 일반적인 것은 슬래시입니다.

^은 '입력 시작과 일치'를 의미합니다. 다음 표현식은 정규 표현식이 처음에 일치해야합니다.

[a-z\d_]은 문자 클래스입니다. '대괄호 사이의 문자'를 의미합니다. d와 결합 된 역 슬래시는 '자릿수'의 바로 가기이며 대시는 포괄적 인 범위를 나타냅니다. 따라서 문자 클래스는 '모든 문자 또는 숫자 또는 밑줄'을 말합니다.

는 앞의 표현식 (문자 클래스)을 2에서 20 번 반복해야한다고하는 한정 기호입니다.

$은 ^와 비슷한 '입력 끝과 일치'를 의미합니다.

또 다른 /은 정규식 자체를 종료합니다. 다음은 행렬 옵션입니다 (이 경우 i). 대소 문자를 구별하지 않습니다.