2012-12-21 1 views
1

lowercaps 입력을 하이픈, 숫자 또는 영문자로만 입력하고 최소한 6 자의을 입력하고 싶습니다. 하지만 아래의 정규 표현식은 입력이 6 자 이상이면 대문자를 허용합니다.PHP preg_match 및 regex : 하이픈, 숫자 또는 영문자가 포함 된 lowercaps와 6 자 이상?

$user_name = 'BloggerCathrin'; 

if(!preg_match('/([a-z0-9]{6}|[a-z0-9\-]{6})/', $user_name)) 
{ 
    echo 'please use lowercaps only, either with hyphens, numbers, or alphabets, and at least 6 characters.'; 
} 

어떻게 해결할 수 있습니까?

+0

부분 일치는 괜찮습니다. 전체 문자열을 처음부터 끝까지 일치시킬 필요가 있다면'/^...$/'을 사용하십시오. – hakre

답변

2

당신 패턴이 전체 문자열과 일치 할 필요가있는 경우

"/^[a-z0-9-]{6,}$/" 
- 처음부터 끝까지 - 당신은 ^$ 내부를 포장 할 필요가 :

 /^([a-z0-9]{6}|[a-z0-9\-]{6})$/ 
start -´       `- end 

PCRE regex syntax - Meta-characters에서 :

^ - 제목의 시작을 선언하십시오 (또는 여러 줄 모드의 줄)
$ - as (멀티 모드 또는 라인의 끝) 피사체의 또는 종료 개행 전에 르트 끝


당신이 (당신은 또한 압축 할 수 있습니다) 여섯 개 문자 최소가있는 경우, 귀하의 패턴과 같습니다

/^[a-z0-9-]{6,}$/ 
      ```- minimum: 6, maximum: unspecified (empty) 
+0

대단히 감사합니다! – laukok

+0

귀하의 질문에 바로 따라하면 패턴을 변경해야합니다. – hakre

+0

'/^([a-z0-9] {6}} [6] $ /'6 문자 만 사용하면 6보다 많은 숫자가 필요합니다. – laukok

5

처음에는 ^ 문자열을 고정하고 마지막에는 $ 문자열을 고정하십시오.