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));