如何使用JavaScript的replace函数生成随机数?

9 浏览
0 Comments

如何使用JavaScript的replace函数生成随机数?

这个问题已经被解答了:

如何创建GUID / UUID?

我是JavaScript的新手,我需要使用replace生成随机数,这是可能的,我尝试了

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

我错过了什么吗?

admin 更改状态以发布 2023年5月21日
0
0 Comments

你使用的是字符串,而不是正则表达式来进行替换操作。这个问题很容易解决,例如只需将

.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());


0