【问题标题】:how can i generate randome number using replace function javascript? [duplicate]如何使用替换函数 javascript 生成随机数? [复制]
【发布时间】:2021-09-12 11:46:03
【问题描述】:

我是 javascript 新手,我需要使用替换生成随机数,我可以尝试

function generateUUID() {
    var dt = new Date().getTime()
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace('/[xy]/g', function (c) {
        var r = (dt + Math.random() * 16) % 16 | 0
        dt = Math.floor(dt / 16)
        return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16)
    })
    return uuid
}

这个函数总是返回xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx 我错过了什么?

【问题讨论】:

  • 字符串'/[xy]/g'是否存在?不...你想要一个正则表达式.../[xy]/g
  • 正确使用正则表达式格式/[xy]/g而不是'/[xy]/g'

标签: javascript replace


【解决方案1】:

您在替换函数中使用字符串而不是正则表达式,这应该是一个简单的修复,例如换个方式

.replace('/[xy]/g',

.replace(/[xy]/g,

function generateUUID() {
    var dt = new Date().getTime()
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        var r = (dt + Math.random() * 16) % 16 | 0
        dt = Math.floor(dt / 16)
        return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16)
    })
    console.log("uuid",uuid)
    return uuid
}

console.log(generateUUID())

我还建议为此目的查看第三方库,例如 uuid,它使用加密强随机值。

function generateUUID() {
    return uuid.v4();
}
console.log(generateUUID());
<script src="https://cdnjs.cloudflare.com/ajax/libs/uuid/8.3.2/uuid.min.js" integrity="sha512-UNM1njAgOFUa74Z0bADwAq8gbTcqZC8Ej4xPSzpnh0l6KMevwvkBvbldF9uR++qKeJ+MOZHRjV1HZjoRvjDfNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

【讨论】:

  • 感谢@Terry Lennox
  • 没问题,很高兴能为您提供帮助!
猜你喜欢
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多