如何使用JavaScript的replace函数生成随机数?
如何使用JavaScript的replace函数生成随机数?
这个问题已经被解答了:
我是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日
你使用的是字符串,而不是正则表达式来进行替换操作。这个问题很容易解决,例如只需将
.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());