Encodera

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

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

Как сделать слаг для URL из строки

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

Слаг — это часть адреса, сделанная из заголовка. Переведите его в нижний регистр и замените всё, кроме букв и цифр, дефисами:

const slug = 'Hello World: JavaScript Tips!'
  .toLowerCase()
  .replace(/[^a-z0-9]+/g, '-')
  .replace(/^-|-$/g, '');
 
console.log(slug);

Результат:

hello-world-javascript-tips

Буквы с диакритикой

normalize('NFD') разделяет букву вроде é на e и знак ударения, а затем знаки удаляются:

const slugify = (text) =>
  text
    .normalize('NFD')
    .replace(/[̀-ͯ]/g, '')
    .toLowerCase()
    .replace(/[^a-z0-9]+/g, '-')
    .replace(/^-|-$/g, '');
 
console.log(slugify('Café au lait in Zürich'));

Результат:

cafe-au-lait-in-zurich

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

Без последнего replace() слаг может начинаться или заканчиваться дефисом:

console.log('  Hello!  '.toLowerCase().replace(/[^a-z0-9]+/g, '-'));

Результат:

-hello-

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

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

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