2012-09-09 2 views
1

preg_match()를 사용하여 -z의 문자 만 허용하려고합니다. 이 문자열을 사용하고 있습니다 :예기치 않은 것을 허용하는 preg_match()

if (! preg_match('/[^a-z]/i', $name)) { 
    echo 'Invalid characters in your name..'; 
    return false; 
} 

하지만 어떤 이유로 모든 문자가 허용됩니다. 나는 오랫동안 그 줄에 별표를 썼다. 그리고 나는 그것이 효과가없는 이유를 알지 못한다.

+1

변경합니다 – Breezer

+0

@Breezer 작동 shuld'^ [A-Z] + $ '로 정규 표현식을 대답하시기 바랍니다 반환합니다. 이것은 작동합니다 :) – skolind

+0

당신은 그것이 도움이되기를 바랍니다. – Breezer

답변

4

패턴은 한 문자 만 검색하므로 문자열에 유효하지 않은 문자 만 포함되어 있으면 항상 true를 반환합니다. 이이 사용자의 패턴에

변화와 당신은 위로 당신이 너무

^[A-za-z]+$ 

아마도 nummbers 대문자를 허용하려면

^[a-z]+$ 

를 실행해야

^[A-za-z0-9]+$ 

수정 : 당신은 당신이

(<|>) 

사용할 수 <> 에 대한 문자열을 확인하고자하지만, 확인 사실

+0

고마워요! 그러면 '<>'을 어떻게 검색합니까? 존재하는 경우 거짓을 반환합니다. – skolind

+0

이 코드는'<>'을 허용하지 않으므로'<>'를 포함하면 false를 반환합니다 – Breezer