使用 JS 生成具有特定登录的随机字符串

Generate random String with a specific sign in it using JS

本文关键字:登录 随机 字符串 JS 使用      更新时间:2023-09-26

有没有办法使用 JS 生成随机字符串。使用"@","."登录,我一直在搜索特定范围之间的随机字符串生成,此代码有效

function stringGen(len) {
    var text = " ";
    var charset = "abcdefghijklmnopqrstuvwxyz0123456789";
    for( var i=0; i < len; i++ ) {
        text += charset.charAt(Math.floor(Math.random() * charset.length));
    }
    return text;
}
console.log(stringGen(3));

但没有具体的迹象。我正在创建一个随机电子邮件生成器,所以请帮助我!

只需连接在一起,直到得到你想要的东西

function stringGen(len) {
    var text = "";
    var charset = "abcdefghijklmnopqrstuvwxyz0123456789";
    for( var i=0; i < len; i++ ) {
        text += charset.charAt(Math.floor(Math.random() * charset.length));
    }
    return text;
}
stringGen(10) + "@" + stringGen(5) + "." + stringGen(3)

我还将变量text的初始化更改为空字符串。

如果您希望 TLD 没有数字:

function stringGen(len, num) {
    var text = "";
    var alpha = "abcdefghijklmnopqrstuvwxyz";
    var alnum = "abcdefghijklmnopqrstuvwxyz0123456789";
    for( var i=0; i < len; i++ ) {
        if(!num)
          text += alnum.charAt(Math.floor(Math.random() * alnum.length));
        else
          text += alpha.charAt(Math.floor(Math.random() * alpha.length)); 
    }
    return text;
}
stringGen(10) + "@" + stringGen(5) + "." + stringGen(3,true)
@

必须在第一个字符之后,不能是最后一个字符。因此,请为它选择一个随机位置,并在到达此位置时使用它:

function stringGen(len) {
    var text = "";
    var charset = "abcdefghijklmnopqrstuvwxyz0123456789";
    var atPos = Math.floor(Math.random() * (len - 2)) + 1;
    for( var i=0; i < len; i++ ) {
      if(i==atPos) {
        text += '@'
      } else {
        text += charset.charAt(Math.floor(Math.random() * charset.length));
      }
    }
    return text;
}

RFC 允许使用带有一个字符或数字的主机名 ( https://serverfault.com/questions/638260/is-it-valid-for-a-hostname-to-start-with-a-digit )

为什么不编写另一个多次使用stringGen()的函数呢?

function emailAddressGen () {
  var text = stringGen(Math.ceil(Math.random() * 10 + 2)); // length of 2 to 13
  text += '@';
  text += stringGen(Math.ceil(Math.random() * 10 + 2));
  text += '.';
  text += stringGen(Math.ceil(Math.random() + 2)); // length of 2 or 3
  return text;
}

您还可以将该Math.ceil(Math.random() * n + m)废话重构为随机数生成器帮助程序函数,该函数采用范围(m 到 n)或单个最大整数。

function randomNum (arg) {
  var range = [0, 0];
  if (typeof arg === 'number') {
    range[1] = arg;
  else if (typeof arg === 'object') {
    range = arg;
  } else {
    return 'Wrong argument type: must be Array or Number';
  }
  return Math.floor(Math.random() * range[1] + range[0]);
}

试试这个:

////
/// @author Nikhil Saini
/// @desc Random string generator function
/// @example var key = randomString("1-a-A-$-#-*"); gives key = 6-y-Z-<-r-@
/// @invocation randomString(pattern);
/// @param pattern: A string with random character identifiers
/// @default random identifiers:-
///     1: numerical digit,
///     a: lowercase alphabet
///     A: uppercase alphabet
///     #: alphanumeric character
///     $: special character
///     *: wildcard
/// @notes:
///     1. Characters that are not acting as identifiers will be preserved
///     2. Character sets can be customised/added by setting randomStringTable.<character-identifier> to desirable string of possible characters
////
///dictionary for possible characters
var randomStringTable = {
  "1": "1234567890",
  "a": "qwertyuiopasdfghjklzxcvbnm",
  "A": "QWERTYUIOPASDFGHJKLZXCVBNM",
  "$": "~!@#$%^&*()_+`{}:'"<>?|''[];',./-=",
  "#": "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM",
  "*": "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM~!@#$%^&*()_+`{}:'"<>?|''[];',./-="
};
/// function for random string generation
var randomString = pattern => {
  var randomString = "";
  for (var i = 0; i < pattern.length; i++) {
    var possibility = randomStringTable[pattern[i]];
    randomString += possibility ?
      possibility.charAt(Math.floor(Math.random() * possibility.length)) :
      pattern[i];
  }
  return randomString;
};
console.log(randomString("aaaaaa@aaaaa.com"));
//the function can be cascaded also
console.log(randomString("a".repeat(randomString("1"))+"@"+"a".repeat(randomString("1"))+"."+"a".repeat(randomString("1"))));

使用已有的代码,您可以将@放在字符串中的随机位置。

String.prototype.replaceAt=function(index, character) {
    return this.substr(0, index) + character + this.substr(index+character.length);
}
var email = '873gre8g9843f98';
email.replaceAt(Math.floor(Math.random()*email.length),'@');