JS | Проверка на заглвные буквы в строке

Помогите пожалуйста с проверкой на JS. Как лучше и короче проверить строку на заглавные буквы? Регулярное выражение и перебор в цикле или как?

var stroka = "pokVRPOVkw439ujgIOOPR" //Рандомная строка в которой есть заглавные буквы, после проверки должна дать true
var stroka = "qwerty34аujikkjhg555fdcvxbbnmasdf" //Строка в которой только маленькие буквы, должна дать false 

Ответы (2 шт):

Автор решения: Laukhin Andrey

Вариант 1. Приводим строку к нижнему регистру и сравниваем с исходной:

const hasCapital = (s) => !(s === s.toLowerCase());

console.log(hasCapital('pokVRPOVkw439ujgIOOPR'));
console.log(hasCapital('qwerty34аujikkjhg555fdcvxqbbnmasdf'));

Вариант 2. Регулярное выражение:

const hasCapital = (s) => !/^[a-zа-я\d]*$/.test(s);

console.log(hasCapital('pokVRPOVkw439ujgIOOPR'));
console.log(hasCapital('qwerty34аujikkjhg555fdcvxqbbnmasdf'));

[a-zа-я\d]* - строка может содержать буквы в нижнем регистре и/или цифры, или быть пустой.

UPD @andreymal в комментарии справедливо указал на спецсимволы, букву Ё и пустую строку. Если требуется их учесть, то используем другое выражение:

const hasCapital = (s) => !/^[^A-ZА-ЯЁ]*$/.test(s);
→ Ссылка
Автор решения: smellyshovel

Как вариант - перевести строку в нижний регистр и сравнить с исходной.

const str = "pokVRPOVkw439ujgIOOPR";
const str2 = "qwerty34аujikkjhg555fdcvxbbnmasdf";

function checkContainsUppercaseLetters(str) {
  return !!str.localeCompare(str.toLowerCase());
}

console.log(checkContainsUppercaseLetters(str));
console.log(checkContainsUppercaseLetters(str2));

→ Ссылка