2012-12-29 1 views
0

그래서 내 PHP 여행을 계속합니다. 이제 등록 양식을 만들고 사용자가 요청한 사용자 이름의 유효성을 검사합니다. 이것은 내가 지금까지 가지고있는 것입니다 :다양한 기준에 따라 preg_match로 사용자 이름 확인

if (preg_match("([a-z 0-9](?=.{3})(?!.{10}))", $user_Name)) 

"RegExr"를 사용하여이 일치 항목을 만들었지 만 작동하지 않는 것 같습니다. 대문자를 추가하고 그것은 여전히 ​​

가 진행되지 않았다 유효했다 : 0

  • 번호 - 6의 모든
  • 분에 없음 대문자 9
  • 특별한 문자 문자
  • 최대 10 자
+1

만 일반 문자와 숫자와 임의의 문자열과 일치하는 $ < 및 10 글자는 끔찍합니다. 그러한 길이 제한에 대한 진정한 이유가 있습니까? – Daniil

+0

나는 더 깔끔하고 전문적인 사용자 이름을 만들고 싶었 기 때문에 최대 10 길이를 사용하기로 결정했습니다 ... 내가 이것을 바꿀 것을 제안합니까? –

+1

많은 사용자가 첫 번째 + 성을 사용자 이름으로 사용하고 (나처럼) 나를 좋아하는 사람들에게는 끔찍합니다. 사용자 이름을 10 개의 기호로 제한하는 것에 대해 '전문가'는 무엇입니까? – Daniil

답변

9

Accordin g 규칙대로 작동해야합니다.

if (preg_match('/^[a-z0-9]{6,10}$/', $user_name)) 
+0

덕분에 도움이된다면 문제가되지 않을 것입니다. –

+0

도움이된다면 올바른 답으로 표시 할 수 있습니다. –

-1

약 3 시간 후 조사 및 문제 해결에서 올바른 해결책을 찾았습니다. 순서가 매우 중요하다는 것을 밝혀 : (?. = {5})

< === 문자열이어야 5 이상

< === 문자열이어야합니다 ({11}?!). 더 이상 10 자 이하

^[AZ 0 -9] + === 6 사이에 사용자 이름의 길이를 가지고 사용자를 강제로 0 -9

if (!preg_match('/(?=.{5})(?!.{11})^[a-z 0 -9]+$/', $user_Name)) { 
      echo 'username is not valid</br>'; 
      echo $user_Name; 
     } 
     else { 
      echo 'username is valid</br>'; 
      echo $user_Name; 
     } 
+2

나는 이미 당신의 질문에 대답했습니다. 지금하고있는 일은 단지 틀린 것입니다. '(? =. {5})'는 이전에 5 개의 문자를 가질 수 있음을 의미하므로 #####은 유효한 사용자 이름입니다. 그리고'[a-z 0-9]는'[a-z0-9]'여야합니다. 그렇지 않으면 공백이 허용됩니다. 나는 심지어 이것이 z, 공백, 하이픈 및 9를 의미한다고 생각합니다. –

+1

@ NicholasRuunu가 맞습니다. 그의 패턴을 사용하십시오. 귀하의 패턴은 정확하지 않습니다, 만약 당신이 그것을 공개적으로 테스트한다면, 당신은 이것을 발견 할 것입니다. – vascowhite

+0

Im 지금 테스트하고 이상한 이유로 작동합니다 :/... Sigh im so confused –