Совпадение со строками, содержащими заглавные буквы, но не полностью состоящими из них

1,00
р.
Задача из книжки. Написать регулярку, которая проверяет соответствие строковой переменной правилу:
есть хотя бы одна буква в верхнем регистре есть хотя бы одна буква в нижнем регистре эти 2 символа идут подряд, порядок не имеет значения
Для простоты, считаем, что строки не содержат переводов строк.
Я написал что-то такое: /[a-z]*[A-Z]+[a-z]*/ или /[a-z]*[A-Z]+[a-z]+/
Предлагается потестить на строках типа "fred", "Fred" и "frEd". Я нашел одно слово, с которым данный шаблон не совпадает, это "freD". Как обобщить регулярку на все возможные строки?
Ответ в книге про перл еще хуже, чем мое решение.

Ответ
/([a-z][A-Z])|([A-Z][a-z])/
Разве это не в точности соответствует поставленному условию?
foreach (qw/fred FRED fRed Fred freD 1234/) { if (/([a-z][A-Z])|([A-Z][a-z])/) { print "$_ - ok
" } else { print "$_ - bad
" } }
вывод:
fred - bad FRED - bad fRed - ok Fred - ok freD - ok 1234 - bad
П.С. Круглые скобки в регулярке - необязательны, но я предпочитаю их ставить в такой ситуации.