如何在Javascript中生成一串数字和字母?
我想使用Javascript以这种格式生成一行数字和字母 示例:如何在Javascript中生成一串数字和字母?,javascript,Javascript,我想使用Javascript以这种格式生成一行数字和字母 示例:F35-HE4E-WAD-32S 因此,一行3-4-3-3的随机数字和字母。我将创建一个函数,生成与给定模板匹配的随机序列。大概是这样的: function getSequence(template) { var r = '', ch, n; for (var i = 0; i < template.length; i++) { ch = template.substr(i, 1);
F35-HE4E-WAD-32S
因此,一行3-4-3-3的随机数字和字母。我将创建一个函数,生成与给定模板匹配的随机序列。大概是这样的:
function getSequence(template) {
var r = '', ch, n;
for (var i = 0; i < template.length; i++) {
ch = template.substr(i, 1);
if (ch == "d") {
r += parseInt(Math.random() * 10);
} else if (ch == "A") {
r += String.fromCharCode(65 + parseInt(Math.random() * 26));
} else if (ch == "w") {
n = parseInt(Math.random() * 36);
if (n > 9) {
r += String.fromCharCode(55 + n);
} else {
r += n;
}
} else {
r += ch;
}
}
return r;
}
console.log(getSequence('Add-wwww-AAA-ddA'));
var sValidCharacters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sCharCode = "";
for (i = 0; i < 13; i++) {
sCharCode = sCharCode + sValidCharacters.charAt(parseInt(Math.random() * sValidCharacters.length));
if ((i === 2) || (i === 6) || (i === 9)) {
sCharCode = sCharCode + "-";
}
}
console.log(sCharCode);
var charGroup = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var length = 13;
var divider = "-";
var dividerLocations = [3, 7, 10]; // the numbers indicate which character to place the divider after
var generatedCode = generateCode(charGroup, length, divider, dividerLocations);
另一个选项是使用替换:
var CHAR_SETS = {
d: '0123456789',
A: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
w: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
};
function randChar(charType) {
var chars = CHAR_SETS[charType];
return chars.charAt(parseInt(Math.random() * chars.length));
}
console.log('Add-wwww-AAA-ddA'.replace(/[Adw]/g, randChar));
我将创建一个函数,生成与给定模板匹配的随机序列。大概是这样的:
function getSequence(template) {
var r = '', ch, n;
for (var i = 0; i < template.length; i++) {
ch = template.substr(i, 1);
if (ch == "d") {
r += parseInt(Math.random() * 10);
} else if (ch == "A") {
r += String.fromCharCode(65 + parseInt(Math.random() * 26));
} else if (ch == "w") {
n = parseInt(Math.random() * 36);
if (n > 9) {
r += String.fromCharCode(55 + n);
} else {
r += n;
}
} else {
r += ch;
}
}
return r;
}
console.log(getSequence('Add-wwww-AAA-ddA'));
var sValidCharacters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sCharCode = "";
for (i = 0; i < 13; i++) {
sCharCode = sCharCode + sValidCharacters.charAt(parseInt(Math.random() * sValidCharacters.length));
if ((i === 2) || (i === 6) || (i === 9)) {
sCharCode = sCharCode + "-";
}
}
console.log(sCharCode);
var charGroup = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var length = 13;
var divider = "-";
var dividerLocations = [3, 7, 10]; // the numbers indicate which character to place the divider after
var generatedCode = generateCode(charGroup, length, divider, dividerLocations);
另一个选项是使用替换:
var CHAR_SETS = {
d: '0123456789',
A: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
w: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
};
function randChar(charType) {
var chars = CHAR_SETS[charType];
return chars.charAt(parseInt(Math.random() * chars.length));
}
console.log('Add-wwww-AAA-ddA'.replace(/[Adw]/g, randChar));
我会使用更通用的方法。然后,您可以将函数重新用于其他代码目的
Number.MAX_SAFE_INTEGER=Number.MAX_SAFE_INTEGER | 9007199254740991;
Number.MIN_SAFE_INTEGER=Number.MIN_SAFE_INTEGER | |-Number.MAX_SAFE_INTEGER;
Number.toInteger=Number.toInteger | |函数(inputArg){
变量编号=+inputArg,
val=0;
如果(数字===数字){
如果(!number | | number===无穷大| | number====无穷大){
val=数字;
}否则{
val=(数字>0 | |-1)*数学地板(数学abs(数字));
}
}
返回val;
};
函数clapsFaint(编号){
返回Math.min(Math.max(Number.toInteger(Number)、Number.min\u SAFE\u INTEGER)、Number.max\u SAFE\u INTEGER);
}
Array.isArray=Array.isArray | |函数(inputArg){
返回{}.toString.call(inputArg)='[object Array]';
}
函数isString(inputArg){
返回{}.toString.call(inputArg)='[对象字符串]';
}
函数生成器CARS(第一个、最后一个){
first=isString(first)和&first.length?first.charCodeAt(0):0;
last=isString(last)和&last.length?last.charCodeAt(0):0;
var chars=[],
指数
对于(索引=第一个;索引最大值){
tmp=min;
最小值=最大值;
max=tmp;
}
tmp=最大值-最小值+1;
if(tmp>Number.MAX\u SAFE\u整数){
抛出新的RangeError('最大值和最小值之差大于Number.max\u SAFE\u整数:'+tmp);
}否则{
val=数学地板(数学随机()*tmp)+min;
}
返回val;
}
函数stringFromPool(ary,数量){
var-str='';
if(Array.isArray(ary)){
对于(索引=0,数量=Number.toInteger(数量);索引<数量;索引+=1){
str+=ary[randomInt(ary.length-1)];
}
}
返回str;
}
var getSequence=(函数(){
var lower=发电机卡('a','z'),
上限=发电机轴('A','Z'),
数字=发电机卡('0','9'),
lowerDigit=更低的concat(数字),
upperDigit=upper.concat(数字),
全部=较低的concat(较高的数字);
返回函数(模板){
var str='',
指数
长度,
chr;
if(isString(模板)和模板长度){
对于(索引=0,长度=template.length;索引
生成
我会使用更通用的方法。然后,您可以将函数重新用于其他代码目的
Number.MAX_SAFE_INTEGER=Number.MAX_SAFE_INTEGER | 9007199254740991;
Number.MIN_SAFE_INTEGER=Number.MIN_SAFE_INTEGER | |-Number.MAX_SAFE_INTEGER;
Number.toInteger=Number.toInteger | |函数(inputArg){
变量编号=+inputArg,
val=0;
如果(数字===数字){
如果(!number | | number===无穷大| | number====无穷大){
val=数字;
}否则{
val=(数字>0 | |-1)*数学地板(数学abs(数字));
}
}
返回val;
};
函数clapsFaint(编号){
返回Math.min(Math.max(Number.toInteger(Number)、Number.min\u SAFE\u INTEGER)、Number.max\u SAFE\u INTEGER);
}
Array.isArray=Array.isArray | |函数(inputArg){
返回{}.toString.call(inputArg)='[object Array]';
}
函数isString(inputArg){
返回{}.toString.call(inputArg)='[对象字符串]';
}
函数生成器CARS(第一个、最后一个){
first=isString(first)和&first.length?first.charCodeAt(0):0;
last=isString(last)和&last.length?last.charCodeAt(0):0;
var chars=[],
指数
对于(索引=第一个;索引最大值){
tmp=min;
最小值=最大值;
max=tmp;
}
tmp=最大值-最小值+1;
if(tmp>Number.MAX\u SAFE\u整数){
抛出新的RangeError('最大值和最小值之差大于Number.max\u SAFE\u整数:'+tmp);
}否则{
val=数学地板(数学随机()*tmp)+min;
}
返回val;
}
函数stringFromPool(ary,数量){
var-str='';
if(Array.isArray(ary)){
对于(索引=0,数量=Number.toInteger(数量);索引<数量;索引+=1){
str+=ary[randomInt(ary.length-1)];
}
}
返回str;
}
var getSequence=(函数(){
var lower=发电机卡('a','z'),
上限=发电机轴('A','Z'),
数字=发电机卡('0','9'),
lowerDigit=更低的concat(数字),
upperDigit=upper.concat(数字),
全部=较低的concat(较高的数字);
返回函数(模板){
var str='',
指数
长度,
chr;
235.232.608.74
125.227.649.68
983.678.369.71
605.708.890.97
537.554.201.23
var charGroup = "!@#$%^&*()?";
var length = 4;
var divider = "";
var dividerLocations = [];
@%$%
)?$&
*&(!
!^@)
*))#