用typescript中的regex生成一个随机字符串。

问题描述 投票:0回答:1

我的函数目前生成一个由数字、大写和小写字母组成的随机字符串,我希望它只生成大写字母和数字。

/**
 * generate random string
 * @param {number} length
 * @returns {string}
 */
static generateRandomString(length: number): string {
    return Math.random()
        .toString(36)
        .replace(/[^a-zA-Z0-9]+/g, '')
        .substr(0, length);
}

我想让它只生成大写字母和数字,我做了,但是没有用。

  .replace(/[^A-Z0-9]+/g, '')
javascript regex
1个回答
0
投票

这真是个制造随机字符串的好方法。

这个... 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);
}

下面是另一种方法,它允许你适当地控制长度,并有助于确保随机字符更接近于真正的随机。注意这里不需要使用regex。

/**
 * generate random string
 */
function generateRandomString(length:number): string {
  return new Array(length)
    .fill(0)
    .map(() => Math.floor(Math.random() * 36).toString(36))
    .join('')
    .toUpperCase();
}
© www.soinside.com 2019 - 2024. All rights reserved.