Проверить наличие трех заглавных букв в строке

159
09 июля 2019, 15:20

Объясните мне, почему этот код не работает и как это исправить:

var str = "AaAA"; 
var r = new RegExp("[A-Z]{3,}"); 
 
if (r.test(str)) { 
  console.log(":)"); 
} else { 
  console.log(":("); 
}

Я хочу проверить, что в строке есть три и более заглавные буквы, но проверка проходит только, если они идут в строке подряд AAA, а если AaAA, то уже нет.

Answer 1

Данное выражение [A-Z]{3,} как раз и указывает на то, что 3 и более букв идут подряд.

Однако вместо test можно воспользоваться методом match, который вернет все совпадения, и проверить количество найденных совпадений, например:

var str = "AaAA"; 
var r = new RegExp("[A-Z]", 'g'); 
 
if (str.match(r).length >= 3) { 
  console.log(":)"); 
} else { 
  console.log(":("); 
}

Answer 2

Можно и в одну строчку:

(new RegExp('^.*[A-Z].*[A-Z].*[A-Z].*$')).test('BlaBlaBla');

const pattern = new RegExp('^.*[A-Z].*[A-Z].*[A-Z].*$'); 
 
let actual = pattern.test('aaa'); 
console.assert( 
  !actual, 
  {msg: `'aaa' not pass`} 
); 
 
actual = pattern.test('aAbB.Z'); 
console.assert( 
  actual, 
  {msg: `'aAbB.Z' not pass`} 
); 
 
actual = pattern.test('aAbB.Za@'); 
console.assert( 
  actual, 
  {msg: `'aAbB.Z' not pass`} 
); 
 
actual = pattern.test('aAbB'); 
console.assert( 
  !actual, 
  {msg: `'aAbB' not pass`} 
); 
 
actual = pattern.test('BlaBlaBla'); 
console.assert( 
  actual, 
  {msg: `'BlaBlaBla' not pass`} 
);

READ ALSO
Вывод json на страницу

Вывод json на страницу

Получаю json такого вида:

149
Маска для динамических полей input

Маска для динамических полей input

Есть блок, который создает 5 input элементов при нажатии на кнопку, в этих input элементах у меня должна быть маска для вводаИспользую jquery mask Но, у меня...

146
Как получить координаты маркера в OSM картах

Как получить координаты маркера в OSM картах

Есть передвижной маркер Google и при перемещении могу записать новые координаты в файл для этого использую следующий код JS

144
Laravel vue сохранение файла на сервере

Laravel vue сохранение файла на сервере

Возникла проблема при сохранение файла на сервереЕсть vue компонент:

161