Это адский способ создания случайных строк.
number#toString(36)
сделает так, что вы получите значения от 0 до z, которые не включают заглавные буквы. Вот способ исправить это, просто используя метод string#toUpperCase
для преобразования строчных в верхний регистр.
/**
* generate random string
*/
function generateRandomString(length: number): string {
return Math.random()
.toString(36)
//.replace(/[^a-z0-9]+/g, '') // Regex isn't necessary here
.replace('.','') // There's only ever one non [a-z0-9] character in this
.toUpperCase()
.substr(0, length);
}
Вот еще один способ сделать это, который позволяет правильно контролировать длину и помогает убедиться, что случайный персонажи ближе к тому, чтобы быть действительно случайными. Обратите внимание, что здесь нет необходимости в регулярных выражениях.
/**
* generate random string
*/
function generateRandomString(length:number): string {
return new Array(length)
.fill(0)
.map(() => Math.floor(Math.random() * 36).toString(36))
.join('')
.toUpperCase();
}