사용자 이름의 길이는 4 ~ 32 자입니다.정규 표현식의 문자 수를 설명합니다.
function validate_username($input)
{
return (bool) preg_match('/^([a-z]+[a-z0-9_]*){4,32}$/i', $input);
}
내 시도가 잘못 되었나요? FALSE
그러나 var_dump(validate_username('h_q8Yewre_'));
반환 TRUE
사용자 이름의 길이는 4 ~ 32 자입니다.정규 표현식의 문자 수를 설명합니다.
function validate_username($input)
{
return (bool) preg_match('/^([a-z]+[a-z0-9_]*){4,32}$/i', $input);
}
내 시도가 잘못 되었나요? FALSE
그러나 var_dump(validate_username('h_q8Yewre_'));
반환 TRUE
{4,32}
내 안 소화가 4 번 일치합니다. 그것을 만족시키기 위해서는 최소한 4 글자가 필요합니다.
는 문자 클래스 지정자에서 독립적 인 내다 주장 필요한 길이 주장하려면이
preg_match('/^(?=.{4,32})([a-z]+[a-z0-9_]*)$/i'
| |
asserts length |
checks char mix
+1하지만 이것은 실제로 여기서 요구되는 것에 다소 복잡합니다. 첫 번째 문자의 유효성을 확인한 다음 나머지'{3,31} '문자를 검증하는 것이 어떨까요? – DaveRandom
여기에 대문자가 허용됩니까? A-Z로 지정해야한다고 생각 했나요? – MrFox
@MrFox'/ i' 플래그로 대소 문자를 구별하지 않습니다. – DaveRandom
당신은 당신의 반복 4 ~ 32 번 반복됩니다 반환
var_dump(validate_username('h_q8Y'));
. 사용자 이름이 문자로 시작하는지 확인하고 싶다고 가정합니다. \w
이 [a-zA-Z0-9_]
에 해당
preg_match('/^[a-z]\w{3,31}$/i', $input);
하는 것으로이 경우, 이것은 당신이 찾고있는 아마.
정규 표현식이 잘못되었습니다.입니다. 여기
([a-z]+[a-z0-9_]*)
은 h_q8Y
과 일치합니다.{4,32}
는 h_q8Y
의 32 이하인 적어도 4 또는 있을 의미한다. 하지만 h_q8Y
하나만 제공했습니다.따라서 작동하지 않습니다.
다음 표현식을 사용하는 것이 좋습니다.
/^[a-z]\w{3,31}$/i
왜하지? $ l = strlen ($ input); if (4 <= $ l && $ l <= 32) ... –
대문자도 일치 시키시겠습니까? –
@ full.stack.ex 네 말이 맞지만 정규식 스타일의 길이 검사기를 선호했다. –