Skip to content

Instantly share code, notes, and snippets.

@tofikhidayatxyz
Created December 6, 2022 12:46
Show Gist options
  • Select an option

  • Save tofikhidayatxyz/7ab9dd3be139e877f8242785c25a066b to your computer and use it in GitHub Desktop.

Select an option

Save tofikhidayatxyz/7ab9dd3be139e877f8242785c25a066b to your computer and use it in GitHub Desktop.
Generate random text pattern for any use case
// [a/A] alpha numeric
// [la] Lowercase alpha numeric
// [ua] Uppercase alpha numeric
// [w] words
// [lw] Lowercase words
// [uw] uppercase word
// [n] number
// [p] symbol
// [r] random all
// [lr] random lowercase
// [ur] randpm uppercase
const NUMBERS = '1234567890';
const WORDS = 'abcdefghijklmnopqrstuvwxyz';
const PUNCTUATION =
"’'()[]{}<>:,‒–—―…!.«»-‐?‘’“”;/⁄·&@*\\•^¤¢$€£¥₩₪†‡°¡¿¬#№%‰‱¶′§~";
const searchPatterns = [
'[a]',
'[la]',
'[ua]',
'[w]',
'[lw]',
'[uw]',
'[n]',
'[p]',
'[r]',
'[lr]',
'[ur]',
];
// const input =
// '[a][a][la][la][ua][w][lw][uw][n][p][a][a][la][la][ua][w][lw][uw][n][p][a][a][la][la][ua][w][lw][uw][n][p]';
// const input = '[la][la][a][a][a][la][a][a][a][a][a]@gmail.com';
// 1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed
// const input =
// '[la][la][la][la][la][la][la][la]-[la][la][la][la]-[la][la][la][la]-[la][la][la][la]-[la][la][la][la][la][la][la][la][la][la][la][la]';
const input =
'[r][r][r][r][r][r][r][r][r][r][r][r][r][r][r][r][r][r][r][r][r][r][r]][r][r][r][r][r][r][r][r][r][r][r][r]';
const createRandomCapitalize = (text) => {
if (!Math.round(Math.random())) {
return text.toUpperCase();
} else {
return text.toLowerCase();
}
};
const alphaNumeric = WORDS + NUMBERS;
const randomPatterns = WORDS + NUMBERS + PUNCTUATION;
const generateRandomText = (type) => {
switch (type) {
case '[a]':
return createRandomCapitalize(
alphaNumeric[Math.floor(Math.random() * (alphaNumeric.length - 1))]
);
case '[la]':
return alphaNumeric[
Math.floor(Math.random() * (alphaNumeric.length - 1))
];
case '[ua]':
return alphaNumeric[
Math.floor(Math.random() * (alphaNumeric.length - 1))
]?.toUpperCase();
case '[w]':
return createRandomCapitalize(
WORDS[Math.floor(Math.random() * (WORDS.length - 1))]
);
case '[lw]':
return WORDS[Math.floor(Math.random() * (WORDS.length - 1))];
case '[uw]':
return WORDS[
Math.floor(Math.random() * (WORDS.length - 1))
]?.toUpperCase();
case '[n]':
return NUMBERS[Math.floor(Math.random() * (NUMBERS.length - 1))];
case '[p]':
return PUNCTUATION[Math.floor(Math.random() * (PUNCTUATION.length - 1))];
case '[r]':
return createRandomCapitalize(
randomPatterns[Math.floor(Math.random() * (randomPatterns.length - 1))]
);
case '[lr]':
return randomPatterns[
Math.floor(Math.random() * (randomPatterns.length - 1))
];
case '[ur]':
return randomPatterns[
Math.floor(Math.random() * (randomPatterns.length - 1))
]?.toUpperCase();
}
};
let res = input;
let loopMax = 0;
while (true) {
loopMax++;
const inputHasbeenPatterns = searchPatterns.find((c) => res.indexOf(c) >= 0);
if (inputHasbeenPatterns == '[a]') {
res = res.replace('[a]', generateRandomText('[a]'));
} else if (inputHasbeenPatterns == '[la]') {
res = res.replace('[la]', generateRandomText('[la]'));
} else if (inputHasbeenPatterns == '[ua]') {
res = res.replace('[ua]', generateRandomText('[ua]'));
} else if (inputHasbeenPatterns == '[w]') {
res = res.replace('[w]', generateRandomText('[w]'));
} else if (inputHasbeenPatterns == '[uw]') {
res = res.replace('[uw]', generateRandomText('[uw]'));
} else if (inputHasbeenPatterns == '[lw]') {
res = res.replace('[lw]', generateRandomText('[lw]'));
} else if (inputHasbeenPatterns == '[n]') {
res = res.replace('[n]', generateRandomText('[n]'));
} else if (inputHasbeenPatterns == '[p]') {
res = res.replace('[p]', generateRandomText('[p]'));
} else if (inputHasbeenPatterns == '[r]') {
res = res.replace('[r]', generateRandomText('[r]'));
} else if (inputHasbeenPatterns == '[ur]') {
res = res.replace('[ur]', generateRandomText('[ur]'));
} else if (inputHasbeenPatterns == '[lr]') {
res = res.replace('[lr]', generateRandomText('[lr]'));
}
if (loopMax >= 100000) {
break;
}
}
console.log(res);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment