@Kinokio ECMA-262 стандарт, подробнее здесь:
https://doc.qt.io/qt-5/qtscript-index.html#language-overview
Есть действия случайная строка:

Запихал сюда кучу символов. Длина пароля из переменной Random (6-14)
Нужно сделать проверку:
1)Содержит ли случайный пароль как минимум 2 цифры.
2)Содержит ли пароль как минимум 2 заглавные буквы (причем нельзя подряд). Пример ft51TM51
3)Содержит ли пароль как минимум 2 не заглавные буквы.
http://qaru.site/questions/2277682/javascript-validation-issue-for-password
Гуглим любой js код вализации и практически полностью копипастим себе ) Подгоняем переменные и все готово )
@fastspace said in Помогите сгенерировать сложный пароль :D:
@qwaros Всё четко
[[RANDOM_PASSWORD]].match(/\d/g) === null || [[RANDOM_PASSWORD]].match(/[A-Z]+/g) === null
толкьо не || а скорее && в вашем случае. т.к у вас условие или цифры или верхний регистр букв )
@fastspace said in Помогите сгенерировать сложный пароль :D:
@qwaros Это в цикле. Как только любое условие в цикле не соответствует, то он цикл новый пароль генерирует.
Выйдет из цикла только когда пароль будет соответствовать всем условиям.
Это может довольно долго выполняться если случайность будет генерить много раз подряд неподходящие пароли ) Вот так будет правельнее по вашим условиям -
var leignt = 12 //длинна пароля
var letter = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","r","s","t","u","v","x","y","z"]
var i = 0
var ii = 0
var tmparr = []
var randompass = ""
var maxrandompass = ""
while(i < leignt){
tmparr = [letter[Math.floor(Math.random() * 23)], Math.floor(Math.random() * 9), letter[Math.floor(Math.random() * 23)].toLocaleUpperCase()]
randompass += tmparr[Math.floor(Math.random() * 3)]
i += 1
}
while(ii < leignt / 3){
maxrandompass += letter[Math.floor(Math.random() * 23)]
maxrandompass += Math.floor(Math.random() * 9)
maxrandompass += letter[Math.floor(Math.random() * 23)].toLocaleUpperCase()
ii += 1
}
log(randompass)
log(maxrandompass)
@fastspace на
var_isset = function (string) {
try {
eval('if (typeof ' + string + ' !=="undefined"){var result = true}else{var result = false}')
return result
} catch (e) {
fail(e)
}
}
is_num = function (string) {
try {
var result = isNaN(string)
if (result) {
var answer = false
} else {
var answer = true
}
return answer
} catch (e) {
fail(e)
}
}
num = Math.floor(Math.random() * (parseInt(14) - parseInt(6) + 1)) + parseInt(6)
agf_cryptopass = function (num) {
if (var_isset(num) == false) {
};
var data = Number(num)
if (is_num(data)) {
var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`~!@#$%^&*()_-+=<>?'}{]["
var content = Array(data).join().split(',').map(function () {
return (alphabet).charAt(Math.floor(Math.random() * alphabet.length));
}).join('')
};
return content
}
ps Для новичков ЭТО НЕ САМ ГЕНЕРАТОР ОН САМ НИЧЕГО НЕ СДЕЛАЕТ это функция при
подаче на нее вы получите пасс. проще показать

переработал чтоб работало,
0_1568745938022_test_script.xml
а вообще это куски библитеки
@PRAGMATIK -а
aurora
криптостойкий=) в оригинале у прагматика он воопще 16 length всегда.
Так что если что все благодарности ему, мопед не мой.(почти с)
upd если мне например надо что бы что больше и чаще выпадало я просто меняю входящую строку по необходимости, роботу безразлично если там будет 2 б например.
@fastspace Даров, та я понял,.. потом. Я сначала тестовый скрипт дал. Там видно правленно. И до мну дошло что тебе это уже и на над)) а у новичка не пойдет моя абрабракабра пришлось править и скрипт делать.
зы но про строку я серьезно, только если длинна меняется и она фиксированная то учесть