0
我正在創建一個應用程序,我有時需要允許用戶生成一些隨機字符串。我想強制以下列格式生成:使用Javascript生成唯一的隨機字符串
xxxx-xxxx-xxxx
其中「x」是某個數字[0-9]或字符[A-Z]。最有效的方法是什麼?生成時,我也需要檢查它是否已經存在於數據庫中,所以我有點擔心它會花費多少時間。
我正在創建一個應用程序,我有時需要允許用戶生成一些隨機字符串。我想強制以下列格式生成:使用Javascript生成唯一的隨機字符串
xxxx-xxxx-xxxx
其中「x」是某個數字[0-9]或字符[A-Z]。最有效的方法是什麼?生成時,我也需要檢查它是否已經存在於數據庫中,所以我有點擔心它會花費多少時間。
您可以使用加密庫。
var crypto = require('crypto');
//function code taken from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript
function randomValueHex (len) {
return crypto.randomBytes(Math.ceil(len/2))
.toString('hex') // convert to hexadecimal format
.slice(0,len).toUpperCase(); // return required number of characters
}
var string = randomValueHex(4)+"-"+randomValueHex(4)+"-"+randomValueHex(4);
console.log(string);
檢查這些線程:Generate random string/characters in JavaScript
您可以檢查領域存在於數據庫中。如果是這樣,只需生成一個新的令牌。然後再檢查一次。如果您沒有龐大的用戶羣,它存在的可能性非常低。因此,長循環檢查的概率也很低。
可能重複[在JavaScript中創建GUID/UUID?](http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript) –
你真的需要檢查重複嗎?你可能不那麼幸運,做數學...'Math.pow(36,12).toLocaleString()' – dandavis
你說你想要「隨機」,但你是否在意它是隨機的?你只關心它是獨一無二的嗎? – AgilePro