Encodera

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

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

Как сгенерировать случайную строку

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

Выбирайте случайные символы из набора в цикле:

const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
let result = '';
 
for (let i = 0; i < 8; i++) {
  result += chars[Math.floor(Math.random() * chars.length)];
}
 
console.log(result.length);

Результат:

8

Коротко и быстро

Для несекретного идентификатора хватит числа в системе счисления 36 — это цифры и латинские буквы:

const id = Math.random().toString(36).slice(2, 10);
 
console.log(/^[a-z0-9]+$/.test(id));

Результат:

true

Надёжные коды и токены

Math.random() предсказуем. Для паролей, токенов и кодов подтверждения используйте crypto.getRandomValues():

const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
const bytes = crypto.getRandomValues(new Uint8Array(12));
const token = [...bytes].map((byte) => chars[byte % chars.length]).join('');
 
console.log(token.length);

Результат:

12

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

Math.random().toString(36) иногда даёт меньше символов, чем ожидается, поэтому не полагайтесь на её точную длину:

console.log((0.5).toString(36));

Результат:

0.i

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

  • Math.random — Возвращает случайное число от 0 до 1.
  • crypto.randomUUID — Создаёт случайный уникальный идентификатор (UUID).
  • String.prototype.slice — Возвращает часть строки.

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

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