private string GetAlphaNumericRandomString(int length)
{
string randomString = "";
while (randomString.Length < length)
{
//generates a random string, of twice the length specified, to counter the
//probability of the while loop having to run a second time
randomString += Membership.GeneratePassword(length * 2, 0);
//replace non alphanumeric characters
randomString = Regex.Replace(randomString, @"[^a-zA-Z0-9]", m => "");
}
return randomString.Substring(0, length);
}
8条答案
按热度按时间mjqavswn1#
此正则表达式将用数字字符9替换所有非字母数字字符。
ijxebb2r2#
我意识到可能有办法做到这一点。GUID方法很棒,除了它不混合大小写字母。在我的例子中,它只产生小写字母。
所以我决定使用正则表达式来删除非α,然后将结果子串到我需要的长度。
mm9b1k5b3#
获取8个字符的字母数字密码的简单方法是生成一个guid并将其用作基础:
如果您需要更长的密码,只需使用子字符串跳过破折号即可:
如果你想确保第一个字符是字母,你可以在需要的时候用一个固定的字符串来替换它,如果(newPwd[0]〉= '0' && newPwd[0]〈= '9')...
我希望有人能觉得这对你有帮助。:-)
xcitsw884#
您也可以尝试生成密码并连接非字母数字字符,直到达到所需的密码长度。
nmpmafwu5#
Breigo的解决方案也有类似的方法,可能不是很有效,但很清晰和简短
ldfqzlk86#
我也更喜欢GUID方法-下面是简短的版本:
jjhzyzn07#
从@SollyM的答案开始,在它周围放一个while循环,以防止出现所有字符都是特殊字符或太多字符都是特殊字符的极不可能的事件,然后substring抛出异常。
bnlyeluc8#
这就是我所使用的: