2016-06-07 64 views
1

此代碼的輸出用連字符的每個4位分離用正則表達式\ W,但如果我更換\ W到其他正則表達式它不起作用。這是爲什麼?隨機序列生成的正則表達式分離器

這是一個完美的作品。

function gen(length, separator) { 
 
    var license = new Array(length + 1).join((Math.random().toString(36) + '00000000000000000').slice(2, 18)).slice(0, length); 
 
    return license.toUpperCase().replace(/(\w{4})/g, '$1' + separator).substr(0, length + Math.round(length/4)-1); 
 
} 
 
document.write(gen(16, '-'));

由連字符的每個4位這一個不分離出來。

function gen(length, separator) { 
 
    var license = new Array(length + 1).join((Math.random().toString(36) + '00000000000000000').slice(2, 18)).slice(0, length); 
 
    return license.toUpperCase().replace(/([A-Z]{4})/g, '$1' + separator).substr(0, length + Math.round(length/4)-1); 
 
} 
 
document.write(gen(16, '-'));

+0

可以添加一些例子來說明這個問題? –

+0

你想用什麼來代替它? – Somrlik

+1

'/([a-z0-9] {4})/ gi'按預期工作。什麼樣的正則表達式不起作用? – casraf

回答

1

我想你需要的東西是這樣的:

function gen(length, separator) { 
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    var text = ''; 
    for(var i=0; i < length; i++) { 
     text += possible.charAt(Math.floor(Math.random() * possible.length)); 
     if(i%4 == 3 && i<length-1) text += separator; 
    } 

    return text; 
} 
document.write(gen(16, '-')); 
+0

謝謝,它完美地工作。 – skygate

相關問題