28

Генерация случайной строки/символов в JavaScript

35

Я хочу создать строку длиной 5 символов, составленную из символов, случайно выбранных из набора [a-zA-Z0-9].

Какой лучший способ сделать это с помощью JavaScript?

5 ответ(ов)

37

Я думаю, этот код подойдет для вашего запроса:

function makeid(length) {
    let result = '';
    const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    const charactersLength = characters.length;
    let counter = 0;
    while (counter < length) {
        result += characters.charAt(Math.floor(Math.random() * charactersLength));
        counter += 1;
    }
    return result;
}

console.log(makeid(5));

Эта функция makeid генерирует строку случайной длины, состоящую из букв латинского алфавита и цифр. Вы можете указать нужную длину строки в параметре length. В приведенном примере вызов makeid(5) создаст строку длиной 5 символов.

3

Кратко, просто и надежно

Возвращает ровно 5 случайных символов, в отличие от некоторых из самых популярных ответов, представленных здесь.

Math.random().toString(36).slice(2, 7);
1

Что-то вроде этого должно сработать:

function randomString(len, charSet) {
    charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    var randomString = '';
    for (var i = 0; i < len; i++) {
        var randomPoz = Math.floor(Math.random() * charSet.length);
        randomString += charSet.substring(randomPoz, randomPoz + 1);
    }
    return randomString;
}

Вы можете вызвать функцию с набором символов по умолчанию [a-zA-Z0-9] или передать свой собственный:

var randomValue = randomString(5);

var randomValue = randomString(5, 'PICKCHARSFROMTHISSET');

Этот код генерирует случайную строку заданной длины из указанных символов.

0

Вы можете использовать следующий код для генерации случайной строки заданной длины с использованием цифр и букв нижнего и верхнего регистра:

function randomstring(L) {
  var s = '';
  var randomchar = function() {
    var n = Math.floor(Math.random() * 62);
    if (n < 10) return n; // 0-9
    if (n < 36) return String.fromCharCode(n + 55); // A-Z
    return String.fromCharCode(n + 61); // a-z
  }
  while (s.length < L) s += randomchar();
  return s;
}

console.log(randomstring(5));

Этот код состоит из функции randomstring, которая генерирует строку длиной L. Внутри этой функции определена randomchar, которая создает случайный символ или цифру в зависимости от случайного числа, сгенерированного в диапазоне от 0 до 61. Если число меньше 10, возвращаются цифры от 0 до 9. Если число больше или равно 10 и меньше 36, возвращаются заглавные буквы от A до Z. Для значений от 36 до 61 возвращаются строчные буквы от a до z.

Вы можете изменить значение 5 в randomstring(5) на любое другое, чтобы получить строку желаемой длины.

0

Чтобы удовлетворить требованию [a-zA-Z0-9] и длине 5 символов, вы можете использовать следующий код:

Для браузера:

btoa(Math.random().toString()).substring(10, 15);

Для NodeJS:

Buffer.from(Math.random().toString()).toString("base64").substring(10, 15);

В результате будут получены строчные буквы, заглавные буквы и цифры.

(Код совместим с TypeScript)

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь