Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как перевести camelCase в snake_case и обратно

Короткий ответ

Найдите каждую заглавную букву и поставьте перед ней подчёркивание:

const snake = 'firstName'.replace(/[A-Z]/g, (letter) => '_' + letter.toLowerCase());
 
console.log(snake);

Результат:

first_name

kebab-case

Для CSS-классов и адресов вместо подчёркивания используют дефис:

const kebab = 'backgroundColor'.replace(/[A-Z]/g, (letter) => '-' + letter.toLowerCase());
 
console.log(kebab);

Результат:

background-color

Обратно в camelCase

Найдите подчёркивание или дефис с буквой после них и замените пару заглавной буквой:

const toCamel = (text) => text.replace(/[_-]([a-z])/g, (match, letter) => letter.toUpperCase());
 
console.log(toCamel('user_last_login'));
console.log(toCamel('font-size'));

Результат:

userLastLogin
fontSize

Частая ошибка

Без флага g заменяется только первое совпадение:

console.log('userLastLogin'.replace(/[A-Z]/, (letter) => '_' + letter.toLowerCase()));

Результат:

user_lastLogin

Функции из этого ответа

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.