나는 모든 대문자를 검사 할 PHP에서 정규 표현식을 원한다.모든 대문자를 검사하는 Regex
숫자 및 기타 문자와 상관없이 주어진 문자열에 대문자가 모두 포함되어 있으면 일치해야합니다. 이 아마도 같은
나는 모든 대문자를 검사 할 PHP에서 정규 표현식을 원한다.모든 대문자를 검사하는 Regex
숫자 및 기타 문자와 상관없이 주어진 문자열에 대문자가 모두 포함되어 있으면 일치해야합니다. 이 아마도 같은
뭔가 :
'/^[^a-z]*$/'
비결은 독점 문자 클래스를 사용하는 것입니다 :이 하나가되지 소문자 모든 문자와 일치합니다. 악센트 부호가있는 문자는 확인되지 않습니다.
다른 문자도 일치 시키므로 대문자 대신 소문자를 찾으십시오. 발견되면 false를 반환합니다. (. 또는 부정 문자 클래스의 tdammers' suggestion 사용)
return !preg_match('/[a-z]/', $str);
또한 정규식을 건너 뛰고 원래의 문자열로 strtoupper($str)
을 비교할 수 있습니다, 이것은 그대로 숫자와 기호를 잎 :
return strtoupper($str) == $str;
모두하지 않습니다 멀티 바이트 문자열 계정; 이를 위해 u
수정자를 정규식에 추가하고 mb_strtoupper()
을 각각 사용해 볼 수 있습니다 (테스트하지 않았으므로 유니 코드를 더 잘 알고있는 사람이이를 확인할 수 있습니까?).
if (preg_match('/^[^\p{Ll}]*$/u', $subject)) {
# String doesn't contain any lowercase characters
} else {
# String contains at least one lowercase characters
}
\p{Ll}
은 유니 코드 소문자와 일치합니다. 따라서 [^\p{Ll}]
은 소문자가 아닌 문자와 일치합니다.
이 ASCII 텍스트 또는 UTF-8 텍스트입니까? – tchrist