gpt4 book ai didi

javascript - JQuery字符串 'randomizer'聚类字符

转载 作者:行者123 更新时间:2023-11-28 20:18:33 26 4
gpt4 key购买 nike

我正在尝试根据用户提供的选项创建一个密码生成器。我当前的脚本允许用户选择大写、小写、数字和特殊字符。这工作得很好,并且生成的字符串达到了用户所需的长度,但是在生成时,数字聚集在字符串处,字母聚集在开头。一个特殊字符将两者分开。您对如何改进流程有什么建议吗?

$('document').ready(function() {
$('button').click(function() {
var lower = "";
var upper = "";
var numeric = "";
var special = "";
var string_length = "";


if($('#12').is(':checked')) { string_length = 12; };
if($('#16').is(':checked')) { string_length = 16; };
if($('#18').is(':checked')) { string_length = 18; };
if($('#22').is(':checked')) { string_length = 22; };
if($('#24').is(':checked')) { string_length = 24; };
if($('#custom').is(':checked')) { $('#custom').show(); $('#custom').val(); } else { $('#custom').hide(); };

if($('#ch1').is(':checked')) { lower = "abcdefghijklmnopqrstuvwxyz"; } else { lower = ""; };
if($('#ch2').is(':checked')) { upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; } else { upper = ""; };
if($('#ch3').is(':checked')) { numeric = "0123456789"; } else { numeric = ""; };
if($('#ch4').is(':checked')) { special = "!£$%^&*()_-+={};:@~#?/"; } else { special = ""; };

var chars = lower + upper + numeric + special;

var randomstring = '';
var charCount = 0;
var numCount = 0;

for (var i=0; i<string_length; i++) {
if((Math.floor(Math.random() * 2) == 0) && numCount < 3 || charCount >= 5) {
var rnum = Math.floor(Math.random() * 10);
randomstring += rnum;
numCount += 1;
} else {
var rnum = Math.floor(Math.random() * chars.length);
randomstring += chars.substring(rnum,rnum+1);
charCount += 1;
}
}
$('span.string').html(randomstring);
});
});

选项 16 个长度、小写、大写、数字和特殊字符返回类似 e046pzw%65760294 的内容。

最佳答案

这一行是你的罪魁祸首:

if((Math.floor(Math.random() * 2) == 0) && numCount < 3 || charCount >= 5) {

它说:

  • 前 3 个字符有超过 50/50 的几率是数字。 “then”始终是一个数字,“else”有时也是一个数字,具体取决于选项。
  • 在您选择了 5 个“其他”字符后(这意味着在第 8 列之后),您将始终拥有一个数字。

这是因为“&&”优先于“||”。如果您希望有 50/50 以上的机会使用该数字,我建议使用一些括号将 OR 子句括起来。我还提供了另一种 50/50 的方法。

if ((Math.random() < 0.5) && (numCount < 3 || charCount >= 5)) {

我不确定为什么你希望数字优先。

关于javascript - JQuery字符串 'randomizer'聚类字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18794403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com