2015-12-20 53 views
0

我正在創建一個應用程序,我有時需要允許用戶生成一些隨機字符串。我想強制以下列格式生成:使用Javascript生成唯一的隨機字符串

xxxx-xxxx-xxxx 

其中「x」是某個數字[0-9]或字符[A-Z]。最有效的方法是什麼?生成時,我也需要檢查它是否已經存在於數據庫中,所以我有點擔心它會花費多少時間。

+2

可能重複[在JavaScript中創建GUID/UUID?](http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript) –

+1

你真的需要檢查重複嗎?你可能不那麼幸運,做數學...'Math.pow(36,12).toLocaleString()' – dandavis

+0

你說你想要「隨機」,但你是否在意它是隨機的?你只關心它是獨一無二的嗎? – AgilePro

回答

1

您可以使用加密庫。

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

您可以檢查領域存在於數據庫中。如果是這樣,只需生成一個新的令牌。然後再檢查一次。如果您沒有龐大的用戶羣,它存在的可能性非常低。因此,長循環檢查的概率也很低。