Почему на последний палиндром выдает false
Подскажите пож. почему на последний палиндром выдает false, пробелы убрал.
function palindrom(str) {
str = str.toLowerCase().replace(/\s/g,'');
if (str === str.split('').reverse().join('')) {
return true;
} else {
return false;
}
}
console.log(palindrom('raCecar')); // === true;
console.log(palindrom('table')); // === false;
console.log(palindrom('А, роза упала на лапу Азора')); // === true;
Ответы (2 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Попробуйте так:
str = str.toLowerCase().replace(/\W/g,'');
Потому что сейчас не учитывается то, что в строке могут быть и другие символы, помимо пробелов, а \W будет учитывать любой символ, кроме буквенного. (https://ru.wikipedia.org/wiki/Регулярные_выражения)
Автор решения: Grundy
→ Ссылка
Кроме пробелов нужно убрать и остальные не буквы.
В данном случае мешается запятая.
Для этого можно воспользоваться следующим регулярным выражением /[^a-zа-яё]/g
function palindrom(str) {
str = str.toLowerCase().replace(/[^a-zа-яё]/g, '');
if (str === str.split('').reverse().join('')) {
return true;
} else {
return false;
}
}
console.log(palindrom('raCecar')); // === true;
console.log(palindrom('table')); // === false;
console.log(palindrom('А, роза упала на лапу Азора')); // === true;