Как проверить массив строк на определенный символ

Необходимо преобразовать массив строк(преобразовывается он правильно). Но нужно чтобы преобразования были только со словами("!", "?" и т п не нужно). Как это можно сделать с помощью регулярок?

function pigIt(str){
    let buffer = str.split(' ');

    for (let i = 0; i < buffer.length; i++) {
        if(buffer[i] === /[a-zA-Z]/) {
            buffer[i] = buffer[i] + buffer[i][0];
            buffer[i] = buffer[i].slice(1) + 'ay';
        }
    }

    return buffer.toString().replace(/,/g, ' ');
}

Пример строки (pigIt('Pig latin is cool !'),'igPay atinlay siay oolcay !')


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

Автор решения: mountain123

let str = "(pigIt('Pig latin is cool !'),'igPay atinlay siay oolcay !')"
let res = str.match(/\w+/g)
console.log(res)

→ Ссылка
Автор решения: OPTIMUS PRIME

buffer[i] === /[a-zA-Z]/ — проверка на совпадение так не делается, такое сравнение даст true, только если в buffer[i] такая же регулярка (а там строка).

Регулярка тоже неправильная, она при проверке даст true, если во всей строке есть хотя бы одна буква. Нужно проверить, что от начала строки ^ до конца строки $ есть только последовательность букв + (одна или много).

function pigIt(str){
    let buffer = str.split(' ');

    for (let i = 0; i < buffer.length; i++) {
        if(/^[a-zA-Z]+$/.test(buffer[i])) {
            buffer[i] = buffer[i] + buffer[i][0];
            buffer[i] = buffer[i].slice(1) + 'ay';
        }
    }

    return buffer.toString().replace(/,/g, ' ');
}

console.log(
    pigIt('Pig latin moo? is cool !')
);

Можно сократить до /^[a-z]+$/i (i - insensitive);

→ Ссылка
Автор решения: EzioMercer
  • Регулярку изменил на /^[a-z]+$/i - позволяет определять строки, которые состоят только из английских букв без учёта регистра

  • Применять к массиву toString, а потом replace - в вашем случае абсолютно бессмысленно. Вместо этого можно воспользоваться методом join

  • Уместил всё в "одну строку" :)

const pigIt = (str) => str
  .split(' ')
  .map(word => /^[a-z]+$/i.test(word) ? (word.slice(1) + word[0] + 'ay') : word)
  .join(' ');

console.log(pigIt('Pig latin is cool!'));

→ Ссылка